342 lines
16 KiB
HTML
342 lines
16 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<!-- NewPage -->
|
|
<html lang="en">
|
|
<head>
|
|
<!-- Generated by javadoc (1.8.0_151) on Tue Oct 31 17:36:46 EDT 2017 -->
|
|
<title>SecondaryMultiKeyCreator (Oracle - Berkeley DB Java Edition API)</title>
|
|
<meta name="date" content="2017-10-31">
|
|
<link rel="stylesheet" type="text/css" href="../../../style.css" title="Style">
|
|
<script type="text/javascript" src="../../../script.js"></script>
|
|
</head>
|
|
<body>
|
|
<script type="text/javascript"><!--
|
|
try {
|
|
if (location.href.indexOf('is-external=true') == -1) {
|
|
parent.document.title="SecondaryMultiKeyCreator (Oracle - Berkeley DB Java Edition API)";
|
|
}
|
|
}
|
|
catch(err) {
|
|
}
|
|
//-->
|
|
var methods = {"i0":6};
|
|
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
|
|
var altColor = "altColor";
|
|
var rowColor = "rowColor";
|
|
var tableTab = "tableTab";
|
|
var activeTableTab = "activeTableTab";
|
|
</script>
|
|
<noscript>
|
|
<div>JavaScript is disabled on your browser.</div>
|
|
</noscript>
|
|
<!-- ========= START OF TOP NAVBAR ======= -->
|
|
<div class="topNav"><a name="navbar.top">
|
|
<!-- -->
|
|
</a>
|
|
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
|
|
<a name="navbar.top.firstrow">
|
|
<!-- -->
|
|
</a>
|
|
<ul class="navList" title="Navigation">
|
|
<li><a href="../../../overview-summary.html">Overview</a></li>
|
|
<li><a href="package-summary.html">Package</a></li>
|
|
<li class="navBarCell1Rev">Class</li>
|
|
<li><a href="class-use/SecondaryMultiKeyCreator.html">Use</a></li>
|
|
<li><a href="package-tree.html">Tree</a></li>
|
|
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
|
|
<li><a href="../../../index-all.html">Index</a></li>
|
|
<li><a href="../../../help-doc.html">Help</a></li>
|
|
</ul>
|
|
<div class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
|
|
</div>
|
|
</div>
|
|
<div class="subNav">
|
|
<ul class="navList">
|
|
<li><a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><span class="typeNameLink">Prev Class</span></a></li>
|
|
<li><a href="../../../com/sleepycat/je/SecondaryReferenceException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next Class</span></a></li>
|
|
</ul>
|
|
<ul class="navList">
|
|
<li><a href="../../../index.html?com/sleepycat/je/SecondaryMultiKeyCreator.html" target="_top">Frames</a></li>
|
|
<li><a href="SecondaryMultiKeyCreator.html" target="_top">No Frames</a></li>
|
|
</ul>
|
|
<ul class="navList" id="allclasses_navbar_top">
|
|
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
|
|
</ul>
|
|
<div>
|
|
<script type="text/javascript"><!--
|
|
allClassesLink = document.getElementById("allclasses_navbar_top");
|
|
if(window==top) {
|
|
allClassesLink.style.display = "block";
|
|
}
|
|
else {
|
|
allClassesLink.style.display = "none";
|
|
}
|
|
//-->
|
|
</script>
|
|
</div>
|
|
<div>
|
|
<ul class="subNavList">
|
|
<li>Summary: </li>
|
|
<li>Nested | </li>
|
|
<li>Field | </li>
|
|
<li>Constr | </li>
|
|
<li><a href="#method.summary">Method</a></li>
|
|
</ul>
|
|
<ul class="subNavList">
|
|
<li>Detail: </li>
|
|
<li>Field | </li>
|
|
<li>Constr | </li>
|
|
<li><a href="#method.detail">Method</a></li>
|
|
</ul>
|
|
</div>
|
|
<a name="skip.navbar.top">
|
|
<!-- -->
|
|
</a></div>
|
|
<!-- ========= END OF TOP NAVBAR ========= -->
|
|
<!-- ======== START OF CLASS DATA ======== -->
|
|
<div class="header">
|
|
<div class="subTitle">com.sleepycat.je</div>
|
|
<h2 title="Interface SecondaryMultiKeyCreator" class="title">Interface SecondaryMultiKeyCreator</h2>
|
|
</div>
|
|
<div class="contentContainer">
|
|
<div class="description">
|
|
<ul class="blockList">
|
|
<li class="blockList">
|
|
<hr>
|
|
<br>
|
|
<pre>public interface <span class="typeNameLabel">SecondaryMultiKeyCreator</span></pre>
|
|
<div class="block">The interface implemented for extracting multi-valued secondary keys from
|
|
primary records.
|
|
|
|
<p>The key creator object is specified by calling <a href="../../../com/sleepycat/je/SecondaryConfig.html#setMultiKeyCreator-com.sleepycat.je.SecondaryMultiKeyCreator-"><code>SecondaryConfig.setMultiKeyCreator</code></a>. The
|
|
secondary database configuration is specified when calling <a href="../../../com/sleepycat/je/Environment.html#openSecondaryDatabase-com.sleepycat.je.Transaction-java.lang.String-com.sleepycat.je.Database-com.sleepycat.je.SecondaryConfig-"><code>Environment.openSecondaryDatabase</code></a>.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<pre>
|
|
class MyMultiKeyCreator implements SecondaryMultiKeyCreator {
|
|
public void createSecondaryKeys(SecondaryDatabase secondary,
|
|
DatabaseEntry key,
|
|
DatabaseEntry data,
|
|
Set<DatabaseEntry> results) {
|
|
//
|
|
// DO HERE: Extract the secondary keys from the primary key and
|
|
// data. For each key extracted, create a DatabaseEntry and add
|
|
// it to the results set.
|
|
//
|
|
}
|
|
}
|
|
...
|
|
SecondaryConfig secConfig = new SecondaryConfig();
|
|
secConfig.setMultiKeyCreator(new MyMultiKeyCreator());
|
|
// Now pass secConfig to Environment.openSecondaryDatabase
|
|
</pre>
|
|
|
|
<p>Use this interface when any number of secondary keys may be present in a
|
|
single primary record, in other words, for many-to-many and one-to-many
|
|
relationships. When only zero or one secondary key is present (for
|
|
many-to-one and one-to-one relationships) you may use the <a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryKeyCreator</code></a> interface instead. The table below summarizes how to
|
|
create all four variations of relationships.</p>
|
|
<div>
|
|
<table border="yes">
|
|
<tr><th>Relationship</th>
|
|
<th>Interface</th>
|
|
<th>Duplicates</th>
|
|
<th>Example</th>
|
|
</tr>
|
|
<tr><td>One-to-one</td>
|
|
<td><a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryKeyCreator</code></a></td>
|
|
<td>No</td>
|
|
<td>A person record with a unique social security number key.</td>
|
|
</tr>
|
|
<tr><td>Many-to-one</td>
|
|
<td><a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryKeyCreator</code></a></td>
|
|
<td>Yes</td>
|
|
<td>A person record with a non-unique employer key.</td>
|
|
</tr>
|
|
<tr><td>One-to-many</td>
|
|
<td><a href="../../../com/sleepycat/je/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryMultiKeyCreator</code></a></td>
|
|
<td>No</td>
|
|
<td>A person record with multiple unique email address keys.</td>
|
|
</tr>
|
|
<tr><td>Many-to-many</td>
|
|
<td><a href="../../../com/sleepycat/je/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryMultiKeyCreator</code></a></td>
|
|
<td>Yes</td>
|
|
<td>A person record with multiple non-unique organization keys.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<p>To configure a database for duplicates. pass true to <a href="../../../com/sleepycat/je/DatabaseConfig.html#setSortedDuplicates-boolean-"><code>DatabaseConfig.setSortedDuplicates(boolean)</code></a>.</p>
|
|
|
|
<p>Note that <code>SecondaryMultiKeyCreator</code> may also be used for
|
|
single key secondaries (many-to-one and one-to-one); in this case, at most a
|
|
single key is added to the results set.
|
|
<code>SecondaryMultiKeyCreator</code> is only slightly less efficient than
|
|
<a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><code>SecondaryKeyCreator</code></a> in that two or three temporary sets must be
|
|
created to hold the results. @see SecondaryConfig</p>
|
|
|
|
<p><em>WARNING:</em> Key creator instances are shared by multiple threads
|
|
and key creator methods are called without any special synchronization.
|
|
Therefore, key creators must be thread safe. In general no shared state
|
|
should be used and any caching of computed values must be done with proper
|
|
synchronization.</p></div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="summary">
|
|
<ul class="blockList">
|
|
<li class="blockList">
|
|
<!-- ========== METHOD SUMMARY =========== -->
|
|
<ul class="blockList">
|
|
<li class="blockList"><a name="method.summary">
|
|
<!-- -->
|
|
</a>
|
|
<h3>Method Summary</h3>
|
|
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
|
|
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd"> </span></span></caption>
|
|
<tr>
|
|
<th class="colFirst" scope="col">Modifier and Type</th>
|
|
<th class="colLast" scope="col">Method and Description</th>
|
|
</tr>
|
|
<tr id="i0" class="altColor">
|
|
<td class="colFirst"><code>void</code></td>
|
|
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/SecondaryMultiKeyCreator.html#createSecondaryKeys-com.sleepycat.je.SecondaryDatabase-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-java.util.Set-">createSecondaryKeys</a></span>(<a href="../../../com/sleepycat/je/SecondaryDatabase.html" title="class in com.sleepycat.je">SecondaryDatabase</a> secondary,
|
|
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a> key,
|
|
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a> data,
|
|
java.util.Set<<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>> results)</code>
|
|
<div class="block">Creates a secondary key entry, given a primary key and data entry.</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="details">
|
|
<ul class="blockList">
|
|
<li class="blockList">
|
|
<!-- ============ METHOD DETAIL ========== -->
|
|
<ul class="blockList">
|
|
<li class="blockList"><a name="method.detail">
|
|
<!-- -->
|
|
</a>
|
|
<h3>Method Detail</h3>
|
|
<a name="createSecondaryKeys-com.sleepycat.je.SecondaryDatabase-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-java.util.Set-">
|
|
<!-- -->
|
|
</a>
|
|
<ul class="blockListLast">
|
|
<li class="blockList">
|
|
<h4>createSecondaryKeys</h4>
|
|
<pre>void createSecondaryKeys(<a href="../../../com/sleepycat/je/SecondaryDatabase.html" title="class in com.sleepycat.je">SecondaryDatabase</a> secondary,
|
|
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a> key,
|
|
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a> data,
|
|
java.util.Set<<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>> results)</pre>
|
|
<div class="block">Creates a secondary key entry, given a primary key and data entry.
|
|
|
|
<p>A secondary key may be derived from the primary key, primary data, or
|
|
a combination of the primary key and data. Zero or more secondary keys
|
|
may be derived from the primary record and returned in the results
|
|
parameter. To ensure the integrity of a secondary database the key
|
|
creator method must always return the same results for a given set of
|
|
input parameters.</p>
|
|
|
|
<p>A <code>RuntimeException</code> may be thrown by this method if an error
|
|
occurs attempting to create the secondary key. This exception will be
|
|
thrown by the API method currently in progress, for example, a <a href="../../../com/sleepycat/je/Database.html#put-com.sleepycat.je.Transaction-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Put-com.sleepycat.je.WriteOptions-"><code>put</code></a> method. However, this will cause the write operation
|
|
to be incomplete. When databases are not configured to be
|
|
transactional, caution should be used to avoid integrity problems. See
|
|
<a href="SecondaryDatabase.html#transactions">Special considerations for
|
|
using Secondary Databases with and without Transactions</a>.</p></div>
|
|
<dl>
|
|
<dt><span class="paramLabel">Parameters:</span></dt>
|
|
<dd><code>secondary</code> - the database to which the secondary key will be
|
|
added. This parameter is passed for informational purposes but is not
|
|
commonly used. This parameter is always non-null.</dd>
|
|
<dd><code>key</code> - the primary key entry. This parameter must not be modified
|
|
by this method. This parameter is always non-null.</dd>
|
|
<dd><code>data</code> - the primary data entry. This parameter must not be modified
|
|
by this method. If <code>SecondaryConfig#setExtractFromPrimaryKeyOnly</code>
|
|
is configured as <code>true</code>, the <code>data</code> param may be either null
|
|
or non-null, and the implementation is expected to ignore it; otherwise,
|
|
this parameter is always non-null.</dd>
|
|
<dd><code>results</code> - the set to contain the the secondary key DatabaseEntry
|
|
objects created by this method.</dd>
|
|
</dl>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<!-- ========= END OF CLASS DATA ========= -->
|
|
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
|
<div class="bottomNav"><a name="navbar.bottom">
|
|
<!-- -->
|
|
</a>
|
|
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
|
|
<a name="navbar.bottom.firstrow">
|
|
<!-- -->
|
|
</a>
|
|
<ul class="navList" title="Navigation">
|
|
<li><a href="../../../overview-summary.html">Overview</a></li>
|
|
<li><a href="package-summary.html">Package</a></li>
|
|
<li class="navBarCell1Rev">Class</li>
|
|
<li><a href="class-use/SecondaryMultiKeyCreator.html">Use</a></li>
|
|
<li><a href="package-tree.html">Tree</a></li>
|
|
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
|
|
<li><a href="../../../index-all.html">Index</a></li>
|
|
<li><a href="../../../help-doc.html">Help</a></li>
|
|
</ul>
|
|
<div class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
|
|
</div>
|
|
</div>
|
|
<div class="subNav">
|
|
<ul class="navList">
|
|
<li><a href="../../../com/sleepycat/je/SecondaryKeyCreator.html" title="interface in com.sleepycat.je"><span class="typeNameLink">Prev Class</span></a></li>
|
|
<li><a href="../../../com/sleepycat/je/SecondaryReferenceException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next Class</span></a></li>
|
|
</ul>
|
|
<ul class="navList">
|
|
<li><a href="../../../index.html?com/sleepycat/je/SecondaryMultiKeyCreator.html" target="_top">Frames</a></li>
|
|
<li><a href="SecondaryMultiKeyCreator.html" target="_top">No Frames</a></li>
|
|
</ul>
|
|
<ul class="navList" id="allclasses_navbar_bottom">
|
|
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
|
|
</ul>
|
|
<div>
|
|
<script type="text/javascript"><!--
|
|
allClassesLink = document.getElementById("allclasses_navbar_bottom");
|
|
if(window==top) {
|
|
allClassesLink.style.display = "block";
|
|
}
|
|
else {
|
|
allClassesLink.style.display = "none";
|
|
}
|
|
//-->
|
|
</script>
|
|
</div>
|
|
<div>
|
|
<ul class="subNavList">
|
|
<li>Summary: </li>
|
|
<li>Nested | </li>
|
|
<li>Field | </li>
|
|
<li>Constr | </li>
|
|
<li><a href="#method.summary">Method</a></li>
|
|
</ul>
|
|
<ul class="subNavList">
|
|
<li>Detail: </li>
|
|
<li>Field | </li>
|
|
<li>Constr | </li>
|
|
<li><a href="#method.detail">Method</a></li>
|
|
</ul>
|
|
</div>
|
|
<a name="skip.navbar.bottom">
|
|
<!-- -->
|
|
</a></div>
|
|
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
|
<p class="legalCopy"><small><font size=1>Copyright (c) 2002, 2017 Oracle and/or its affiliates. All rights reserved.</font> </small></p>
|
|
</body>
|
|
</html>
|