<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_11) on Tue Feb 12 17:38:40 PST 2008 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
MappingDefaults (OpenJPA 1.0.2 API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.openjpa.jdbc.meta.MappingDefaults interface">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="MappingDefaults (OpenJPA 1.0.2 API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/MappingDefaults.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Joinable.html" title="interface in org.apache.openjpa.jdbc.meta"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.html" title="class in org.apache.openjpa.jdbc.meta"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/openjpa/jdbc/meta/MappingDefaults.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="MappingDefaults.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.openjpa.jdbc.meta</FONT>
<BR>
Interface MappingDefaults</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.html" title="class in org.apache.openjpa.jdbc.meta">MappingDefaultsImpl</A>, <A HREF="../../../../../org/apache/openjpa/jdbc/meta/NoneMappingDefaults.html" title="class in org.apache.openjpa.jdbc.meta">NoneMappingDefaults</A>, <A HREF="../../../../../org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.html" title="class in org.apache.openjpa.persistence.jdbc">PersistenceMappingDefaults</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>MappingDefaults</B></DL>
</PRE>

<P>
Generates default names for tables, columns, indexes, constraints, etc.
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Abe White</DD>
</DL>
<HR>

<P>

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#defaultMissingInfo()">defaultMissingInfo</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Whether to fill in missing mapping information at runtime with the
 default values supplied by this plugin.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getDiscriminatorValue(org.apache.openjpa.jdbc.meta.Discriminator, boolean)">getDiscriminatorValue</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
                      boolean&nbsp;adapt)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the default discriminator value for the given instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getForeignKey(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, boolean)">getForeignKey</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
              <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
              boolean&nbsp;inverse)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default foreign key for the join from this value to its
 related type, or null for a logical foreign key only.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getIndex(org.apache.openjpa.jdbc.meta.Discriminator, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getIndex</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default index for the discriminator, or null if the
 discriminator columns should not be indexed by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getIndex(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getIndex</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default index for the value, or null if the value columns
 should not be indexed by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getIndex(org.apache.openjpa.jdbc.meta.Version, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getIndex</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default index for the version, or null if the
 version columns should not be indexed by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getJoinForeignKey(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table)">getJoinForeignKey</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default foreign key for the join from this class' table to its
 superclass' table, or null for a logical foreign key only.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getJoinForeignKey(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table)">getJoinForeignKey</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default foreign key for the join from this field's table to its
 defining class' table, or null for a logical foreign key only.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getJoinIndex(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getJoinIndex</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default index for the join, or null if the
 join columns should not be indexed by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Unique.html" title="class in org.apache.openjpa.jdbc.schema">Unique</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getJoinUnique(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getJoinUnique</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default constraint for the join, or null if the join columns
 should not be constrained by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getPrimaryKeyName(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table)">getPrimaryKeyName</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cm,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the primary key for the table of the given class,
 or null for database default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getStrategy(org.apache.openjpa.jdbc.meta.ClassMapping, boolean)">getStrategy</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
            boolean&nbsp;adapt)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default mapping strategy when there is no explicit strategy
 and no hierarchy strategy given.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getStrategy(org.apache.openjpa.jdbc.meta.Discriminator, boolean)">getStrategy</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
            boolean&nbsp;adapt)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default discriminator mapping strategy when there is no explicit
 strategy.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getStrategy(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.Class, boolean)">getStrategy</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;type,
            boolean&nbsp;adapt)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Custom handler or strategy for the given field, or null if none
 has been registered.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getStrategy(org.apache.openjpa.jdbc.meta.Version, boolean)">getStrategy</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
            boolean&nbsp;adapt)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default version mapping strategy when there is no explicit strategy.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getTableName(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Schema)">getTableName</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Schema.html" title="class in org.apache.openjpa.jdbc.schema">Schema</A>&nbsp;defaultSchema)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the default table name for the given class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getTableName(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Schema)">getTableName</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Schema.html" title="class in org.apache.openjpa.jdbc.schema">Schema</A>&nbsp;defaultSchema)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the default secondary table name for the given field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Unique.html" title="class in org.apache.openjpa.jdbc.schema">Unique</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#getUnique(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">getUnique</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
          <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a default constraint for the value, or null if the value columns
 should not be constrained by default.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#installPrimaryKey(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table)">installPrimaryKey</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                  <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If desired, install a primary key on the given secondary table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateColumns(org.apache.openjpa.jdbc.meta.Discriminator, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given discriminator columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateColumns(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given value columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateColumns(org.apache.openjpa.jdbc.meta.Version, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given version columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateDataStoreIdColumns(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateDataStoreIdColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                           <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                           <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given datastore identity columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateForeignKeyColumn(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, boolean, int, int)">populateForeignKeyColumn</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                         boolean&nbsp;inverse,
                         int&nbsp;pos,
                         int&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given column used to join a value
 to its related type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateJoinColumn(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, int, int)">populateJoinColumn</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cm,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                   int&nbsp;pos,
                   int&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given column used to join a class
 to its superclass table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateJoinColumn(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, int, int)">populateJoinColumn</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                   int&nbsp;pos,
                   int&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given column used to join a field
 to its defining class' table.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateNullIndicatorColumns(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateNullIndicatorColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                             <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given null indicator columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#populateOrderColumns(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])">populateOrderColumns</A></B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill in default information for the given order columns.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaults.html#useClassCriteria()">useClassCriteria</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The default for whether relations use the related object's
 expected class as part of the join criteria.</TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="defaultMissingInfo()"><!-- --></A><H3>
defaultMissingInfo</H3>
<PRE>
boolean <B>defaultMissingInfo</B>()</PRE>
<DL>
<DD>Whether to fill in missing mapping information at runtime with the
 default values supplied by this plugin. A value of false means that
 all mapping information must be present at runtime.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="useClassCriteria()"><!-- --></A><H3>
useClassCriteria</H3>
<PRE>
boolean <B>useClassCriteria</B>()</PRE>
<DL>
<DD>The default for whether relations use the related object's
 expected class as part of the join criteria.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getStrategy(org.apache.openjpa.jdbc.meta.ClassMapping, boolean)"><!-- --></A><H3>
getStrategy</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getStrategy</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                   boolean&nbsp;adapt)</PRE>
<DL>
<DD>Default mapping strategy when there is no explicit strategy
 and no hierarchy strategy given.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>cls</CODE> - the class; will not be mapped, but superclass and raw
 <A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingInfo.html" title="class in org.apache.openjpa.jdbc.meta"><CODE>MappingInfo</CODE></A> will be available<DD><CODE>adapt</CODE> - whether we can adapt the mapping or schema
<DT><B>Returns:</B><DD>the strategy alias or a strategy instance, or null</DL>
</DD>
</DL>
<HR>

<A NAME="getStrategy(org.apache.openjpa.jdbc.meta.Version, boolean)"><!-- --></A><H3>
getStrategy</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getStrategy</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
                   boolean&nbsp;adapt)</PRE>
<DL>
<DD>Default version mapping strategy when there is no explicit strategy.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>vers</CODE> - the version; will not be mapped, but raw
 <A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingInfo.html" title="class in org.apache.openjpa.jdbc.meta"><CODE>MappingInfo</CODE></A> will be available<DD><CODE>adapt</CODE> - whether we can adapt the mapping or schema
<DT><B>Returns:</B><DD>the strategy alias or a strategy instance, or null</DL>
</DD>
</DL>
<HR>

<A NAME="getStrategy(org.apache.openjpa.jdbc.meta.Discriminator, boolean)"><!-- --></A><H3>
getStrategy</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getStrategy</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
                   boolean&nbsp;adapt)</PRE>
<DL>
<DD>Default discriminator mapping strategy when there is no explicit
 strategy.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>disc</CODE> - the discriminator; will not be mapped, but raw
 <A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingInfo.html" title="class in org.apache.openjpa.jdbc.meta"><CODE>MappingInfo</CODE></A> will be available<DD><CODE>adapt</CODE> - whether we can adapt the mapping or schema
<DT><B>Returns:</B><DD>the strategy alias or a strategy instance, or null</DL>
</DD>
</DL>
<HR>

<A NAME="getStrategy(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.Class, boolean)"><!-- --></A><H3>
getStrategy</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getStrategy</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;type,
                   boolean&nbsp;adapt)</PRE>
<DL>
<DD>Custom handler or strategy for the given field, or null if none
 has been registered.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>vm</CODE> - the value mapping; will not be mapped, but raw
 <A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingInfo.html" title="class in org.apache.openjpa.jdbc.meta"><CODE>MappingInfo</CODE></A> will be available<DD><CODE>type</CODE> - the value type<DD><CODE>adapt</CODE> - whether we can adapt the mapping or schema
<DT><B>Returns:</B><DD>the handler/strategy alias or instance, or null</DL>
</DD>
</DL>
<HR>

<A NAME="getDiscriminatorValue(org.apache.openjpa.jdbc.meta.Discriminator, boolean)"><!-- --></A><H3>
getDiscriminatorValue</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getDiscriminatorValue</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
                             boolean&nbsp;adapt)</PRE>
<DL>
<DD>Return the default discriminator value for the given instance.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getTableName(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Schema)"><!-- --></A><H3>
getTableName</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getTableName</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                    <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Schema.html" title="class in org.apache.openjpa.jdbc.schema">Schema</A>&nbsp;defaultSchema)</PRE>
<DL>
<DD>Return the default table name for the given class. This method is
 only called for classes mapped to their own table.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getTableName(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Schema)"><!-- --></A><H3>
getTableName</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getTableName</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                    <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Schema.html" title="class in org.apache.openjpa.jdbc.schema">Schema</A>&nbsp;defaultSchema)</PRE>
<DL>
<DD>Return the default secondary table name for the given field. This
 method is only called for fields whose strategy requires a secondary
 table.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="populateDataStoreIdColumns(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateDataStoreIdColumns</H3>
<PRE>
void <B>populateDataStoreIdColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                                <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given datastore identity columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="populateColumns(org.apache.openjpa.jdbc.meta.Version, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateColumns</H3>
<PRE>
void <B>populateColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given version columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="populateColumns(org.apache.openjpa.jdbc.meta.Discriminator, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateColumns</H3>
<PRE>
void <B>populateColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given discriminator columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="populateJoinColumn(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, int, int)"><!-- --></A><H3>
populateJoinColumn</H3>
<PRE>
void <B>populateJoinColumn</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cm,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                        int&nbsp;pos,
                        int&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given column used to join a class
 to its superclass table. The column will be a clone of the target
 column, or have its name and Java type set in the case of a constant
 target.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - the target of this column in the join; may be
 another column or a constant value<DD><CODE>pos</CODE> - the index of this column in the logical foreign key<DD><CODE>cols</CODE> - the number of columns in the logical foreign key</DL>
</DD>
</DL>
<HR>

<A NAME="populateJoinColumn(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, int, int)"><!-- --></A><H3>
populateJoinColumn</H3>
<PRE>
void <B>populateJoinColumn</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                        <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                        int&nbsp;pos,
                        int&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given column used to join a field
 to its defining class' table. The column will be a clone of the target
 column, or have its name and Java type set in the case of a constant
 target.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - the target of this column in the join; may be
 another column or a constant value<DD><CODE>pos</CODE> - the index of this column in the logical foreign key<DD><CODE>cols</CODE> - the number of columns in the logical foreign key</DL>
</DD>
</DL>
<HR>

<A NAME="populateForeignKeyColumn(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column, java.lang.Object, boolean, int, int)"><!-- --></A><H3>
populateForeignKeyColumn</H3>
<PRE>
void <B>populateForeignKeyColumn</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                              <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                              <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>&nbsp;col,
                              <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;target,
                              boolean&nbsp;inverse,
                              int&nbsp;pos,
                              int&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given column used to join a value
 to its related type. The column will be a clone of the target
 column, or have its name and Java type set in the case of a constant
 target.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping<DD><CODE>target</CODE> - the target of this column in the join; may be
 another column or a constant value<DD><CODE>inverse</CODE> - whether this is an inverse foreign key<DD><CODE>pos</CODE> - the index of this column in the logical foreign key<DD><CODE>cols</CODE> - the number of columns in the logical foreign key</DL>
</DD>
</DL>
<HR>

<A NAME="populateColumns(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateColumns</H3>
<PRE>
void <B>populateColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given value columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping</DL>
</DD>
</DL>
<HR>

<A NAME="populateOrderColumns(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateOrderColumns</H3>
<PRE>
boolean <B>populateOrderColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given order columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>false if the given field should not have order columns
 by default; fill in default information even when returning
 false in case the user forces ordering</DL>
</DD>
</DL>
<HR>

<A NAME="populateNullIndicatorColumns(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
populateNullIndicatorColumns</H3>
<PRE>
boolean <B>populateNullIndicatorColumns</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                                     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Fill in default information for the given null indicator columns.
 The columns' name and Java type will already be populated with generic
 defaults that may be replaced.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping
<DT><B>Returns:</B><DD>false if the given value should not have null indicator
 columns by default; fill in default information even
 when returning false in case the user forces an indicator</DL>
</DD>
</DL>
<HR>

<A NAME="getJoinForeignKey(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table)"><!-- --></A><H3>
getJoinForeignKey</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A> <B>getJoinForeignKey</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cls,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign)</PRE>
<DL>
<DD>Return a default foreign key for the join from this class' table to its
 superclass' table, or null for a logical foreign key only. Do not
 add columns to the key or add the key to the table; only fill in
 its information such as name, delete action, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getJoinForeignKey(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table)"><!-- --></A><H3>
getJoinForeignKey</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A> <B>getJoinForeignKey</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                             <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign)</PRE>
<DL>
<DD>Return a default foreign key for the join from this field's table to its
 defining class' table, or null for a logical foreign key only. Do not
 add columns to the key or add the key to the table; only fill in
 its information such as name, delete action, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getForeignKey(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Table, boolean)"><!-- --></A><H3>
getForeignKey</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/ForeignKey.html" title="class in org.apache.openjpa.jdbc.schema">ForeignKey</A> <B>getForeignKey</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;local,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;foreign,
                         boolean&nbsp;inverse)</PRE>
<DL>
<DD>Return a default foreign key for the join from this value to its
 related type, or null for a logical foreign key only. Do not
 add columns to the key or add the key to the table; only fill in
 its information such as name, delete action, etc.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping<DD><CODE>inverse</CODE> - whether this is an inverse key</DL>
</DD>
</DL>
<HR>

<A NAME="getJoinIndex(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getJoinIndex</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A> <B>getJoinIndex</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                   <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default index for the join, or null if the
 join columns should not be indexed by default. Do not
 add columns to the index or add the index to the table; only fill in
 its information such as name, uniqueness, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getIndex(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getIndex</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A> <B>getIndex</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default index for the value, or null if the value columns
 should not be indexed by default. Do not add columns to the index or
 add the index to the table; only fill in its information such as name,
 uniqueness, etc.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping</DL>
</DD>
</DL>
<HR>

<A NAME="getIndex(org.apache.openjpa.jdbc.meta.Version, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getIndex</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A> <B>getIndex</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Version.html" title="class in org.apache.openjpa.jdbc.meta">Version</A>&nbsp;vers,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default index for the version, or null if the
 version columns should not be indexed by default. Do not
 add columns to the index or add the index to the table; only fill in
 its information such as name, uniqueness, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getIndex(org.apache.openjpa.jdbc.meta.Discriminator, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getIndex</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Index.html" title="class in org.apache.openjpa.jdbc.schema">Index</A> <B>getIndex</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Discriminator.html" title="class in org.apache.openjpa.jdbc.meta">Discriminator</A>&nbsp;disc,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
               <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default index for the discriminator, or null if the
 discriminator columns should not be indexed by default. Do not
 add columns to the index or add the index to the table; only fill in
 its information such as name, uniqueness, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getJoinUnique(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getJoinUnique</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Unique.html" title="class in org.apache.openjpa.jdbc.schema">Unique</A> <B>getJoinUnique</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                     <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default constraint for the join, or null if the join columns
 should not be constrained by default. Do not add columns to the
 constraint or add the constraint to the table; only fill in its
 information such as name, deferrability, etc.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getUnique(org.apache.openjpa.jdbc.meta.ValueMapping, java.lang.String, org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.Column[])"><!-- --></A><H3>
getUnique</H3>
<PRE>
<A HREF="../../../../../org/apache/openjpa/jdbc/schema/Unique.html" title="class in org.apache.openjpa.jdbc.schema">Unique</A> <B>getUnique</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ValueMapping.html" title="interface in org.apache.openjpa.jdbc.meta">ValueMapping</A>&nbsp;vm,
                 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table,
                 <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Column.html" title="class in org.apache.openjpa.jdbc.schema">Column</A>[]&nbsp;cols)</PRE>
<DL>
<DD>Return a default constraint for the value, or null if the value columns
 should not be constrained by default. Do not add columns to the
 constraint or add the constraint to the table; only fill in its
 information such as name, deferrability, etc.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - base name for value, as decided by mapping</DL>
</DD>
</DL>
<HR>

<A NAME="getPrimaryKeyName(org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.schema.Table)"><!-- --></A><H3>
getPrimaryKeyName</H3>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getPrimaryKeyName</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/ClassMapping.html" title="class in org.apache.openjpa.jdbc.meta">ClassMapping</A>&nbsp;cm,
                         <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table)</PRE>
<DL>
<DD>Return the name of the primary key for the table of the given class,
 or null for database default.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="installPrimaryKey(org.apache.openjpa.jdbc.meta.FieldMapping, org.apache.openjpa.jdbc.schema.Table)"><!-- --></A><H3>
installPrimaryKey</H3>
<PRE>
void <B>installPrimaryKey</B>(<A HREF="../../../../../org/apache/openjpa/jdbc/meta/FieldMapping.html" title="class in org.apache.openjpa.jdbc.meta">FieldMapping</A>&nbsp;fm,
                       <A HREF="../../../../../org/apache/openjpa/jdbc/schema/Table.html" title="class in org.apache.openjpa.jdbc.schema">Table</A>&nbsp;table)</PRE>
<DL>
<DD>If desired, install a primary key on the given secondary table.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/MappingDefaults.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/meta/Joinable.html" title="interface in org.apache.openjpa.jdbc.meta"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.html" title="class in org.apache.openjpa.jdbc.meta"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/openjpa/jdbc/meta/MappingDefaults.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="MappingDefaults.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &copy; 2006-2008 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
