<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
	<id>tag:n2.nabble.com,2006:forum-218414</id>
	<title>Nabble - OpenJPA Commits</title>
	<updated>2009-11-05T14:27:03Z</updated>
	<link rel="self" type="application/atom+xml" href="http://n2.nabble.com/OpenJPA-Commits-f218414.xml" />
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/OpenJPA-Commits-f218414.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:n2.nabble.com,2006:post-3955495</id>
	<title>svn commit: r833218 - /openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java</title>
	<published>2009-11-05T14:27:03Z</published>
	<updated>2009-11-05T14:27:03Z</updated>
	<author>
		<name>allee8285-2</name>
	</author>
	<content type="html">Author: allee8285
&lt;br&gt;Date: Thu Nov &amp;nbsp;5 22:27:03 2009
&lt;br&gt;New Revision: 833218
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=833218&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=833218&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1375 - Clean _plans IdentityHashMap when clear or close is called.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=833218&amp;r1=833217&amp;r2=833218&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=833218&amp;r1=833217&amp;r2=833218&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Thu Nov &amp;nbsp;5 22:27:03 2009
&lt;br&gt;@@ -32,7 +32,6 @@
&lt;br&gt;&amp;nbsp;import java.util.Collection;
&lt;br&gt;&amp;nbsp;import java.util.EnumSet;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;-import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.IdentityHashMap;
&lt;br&gt;&amp;nbsp;import javax.persistence.EntityManager;
&lt;br&gt;&amp;nbsp;import javax.persistence.FlushModeType;
&lt;br&gt;@@ -982,6 +981,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void clear() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.detachAll(this, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_plans.clear();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Object getDelegate() {
&lt;br&gt;@@ -1113,6 +1113,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void close() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_plans.clear();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isOpen() {
&lt;br&gt;@@ -1325,13 +1326,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected Class resolveClass(ObjectStreamClass classDesc)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected Class&amp;lt;?&amp;gt; resolveClass(ObjectStreamClass classDesc)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws IOException, ClassNotFoundException {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String cname = classDesc.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cname.startsWith(&amp;quot;[&amp;quot;)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// An array
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class component;		// component class
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; component;		// component class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int dcount;			 &amp;nbsp; &amp;nbsp;// dimension
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (dcount=1; cname.charAt(dcount)=='['; dcount++) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cname.charAt(dcount) == 'L') {
&lt;br&gt;@@ -1357,7 +1358,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * If this is a generated subclass, look up the corresponding Class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * object via metadata.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private Class lookupClass(String className)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private Class&amp;lt;?&amp;gt; lookupClass(String className)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws ClassNotFoundException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Class.forName(className);
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r833218-openjpa-branches-1-3-x-openjpa-persistence-src-main-java-org-apache-openjpa-persia-tp3955495p3955495.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3954619</id>
	<title>svn commit: r833150 - /openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java</title>
	<published>2009-11-05T11:54:32Z</published>
	<updated>2009-11-05T11:54:32Z</updated>
	<author>
		<name>allee8285-2</name>
	</author>
	<content type="html">Author: allee8285
&lt;br&gt;Date: Thu Nov &amp;nbsp;5 19:54:32 2009
&lt;br&gt;New Revision: 833150
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=833150&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=833150&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1375 - Clean _plans IdentityHashMap when clear or close is called.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=833150&amp;r1=833149&amp;r2=833150&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=833150&amp;r1=833149&amp;r2=833150&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Thu Nov &amp;nbsp;5 19:54:32 2009
&lt;br&gt;@@ -33,7 +33,6 @@
&lt;br&gt;&amp;nbsp;import java.util.Arrays;
&lt;br&gt;&amp;nbsp;import java.util.Collection;
&lt;br&gt;&amp;nbsp;import java.util.EnumSet;
&lt;br&gt;-import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.IdentityHashMap;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;import java.util.Set;
&lt;br&gt;@@ -50,7 +49,6 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.Metamodel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.commons.lang.StringUtils;
&lt;br&gt;-import org.apache.commons.logging.LogFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.Compatibility;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.OpenJPAConfiguration;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.ee.ManagedRuntime;
&lt;br&gt;@@ -1113,6 +1111,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void clear() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.detachAll(this, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_plans.clear();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Object getDelegate() {
&lt;br&gt;@@ -1245,6 +1244,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void close() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_plans.clear();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isOpen() {
&lt;br&gt;@@ -1473,13 +1473,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected Class resolveClass(ObjectStreamClass classDesc)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected Class&amp;lt;?&amp;gt; resolveClass(ObjectStreamClass classDesc)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws IOException, ClassNotFoundException {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String cname = classDesc.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cname.startsWith(&amp;quot;[&amp;quot;)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// An array
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class component;		// component class
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; component;		// component class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int dcount;			 &amp;nbsp; &amp;nbsp;// dimension
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (dcount=1; cname.charAt(dcount)=='['; dcount++) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cname.charAt(dcount) == 'L') {
&lt;br&gt;@@ -1505,7 +1505,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * If this is a generated subclass, look up the corresponding Class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * object via metadata.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private Class lookupClass(String className)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private Class&amp;lt;?&amp;gt; lookupClass(String className)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws ClassNotFoundException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Class.forName(className);
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r833150-openjpa-trunk-openjpa-persistence-src-main-java-org-apache-openjpa-persistence-Ena-tp3954619p3954619.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3948744</id>
	<title>[CONF] OpenJPA &gt; JPA 2.0 Roadmap</title>
	<published>2009-11-04T14:27:00Z</published>
	<updated>2009-11-04T14:27:00Z</updated>
	<author>
		<name>confluence-2</name>
	</author>
	<content type="html">

    &lt;base href=&quot;http://cwiki.apache.org/confluence&quot;&gt;
            &lt;link rel=&quot;stylesheet&quot; href=&quot;/confluence/s/1519/1/1/_/styles/combined.css?spaceKey=openjpa&amp;amp;forWysiwyg=true&quot; type=&quot;text/css&quot;&gt;
    

&lt;div id=&quot;pageContent&quot;&gt;
&lt;div id=&quot;notificationFormat&quot;&gt;
&lt;div class=&quot;wiki-content&quot;&gt;
&lt;div class=&quot;email&quot;&gt;
     &lt;h2&gt;&lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/JPA+2.0+Roadmap&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JPA 2.0 Roadmap&lt;/a&gt;&lt;/h2&gt;
     &lt;h4&gt;Page &lt;b&gt;edited&lt;/b&gt; by             &lt;a href=&quot;http://cwiki.apache.org/confluence/display/~techhusky&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Jeremy Bauer&lt;/a&gt;
    &lt;/h4&gt;
     Added I13 and incomplete I12 summary, task list updates
          &lt;div id=&quot;versionComment&quot; class=&quot;noteMacro&quot; style=&quot;display:none; padding: 5px;&quot;&gt;
     Added I13 and incomplete I12 summary, task list updates&lt;br /&gt;
     &lt;/div&gt;
          &lt;br /&gt;
     &lt;div class=&quot;notificationGreySide&quot;&gt;
         

&lt;h1&gt;&lt;a name=&quot;JPA2.0Roadmap-JPA2.0RoadMap&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;JPA 2.0 Road Map&lt;/h1&gt;

&lt;p&gt;Apache OpenJPA 2.0.0 is being developed in trunk and will be a JPA 2.0 certified release of the &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=317&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;JSR-317&lt;/a&gt; specification.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-DevelopmentProcess&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;Development Process&lt;/h3&gt;

&lt;p&gt;The process that OpenJPA will be following for developing JPA 2.0 functionality is documented &lt;a href=&quot;/confluence/display/openjpa/JPA+2.0+Development+Process&quot; title=&quot;JPA 2.0 Development Process&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.  The specific roadmap and iteration details will be documented on this Roadmap page.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-TestCoverage&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;Test Coverage&lt;/h3&gt;

&lt;p&gt;For a list of databases being tested and current status, checkout the &lt;a href=&quot;/confluence/display/openjpa/JPA+2.0+Test+Coverage&quot; title=&quot;JPA 2.0 Test Coverage&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JPA 2.0 Test Coverage&lt;/a&gt; page.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-Presentations&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;Presentations&lt;/h3&gt;

&lt;p&gt;Take a look at the &lt;a href=&quot;/confluence/display/openjpa/JPA+2.0+Presentations&quot; title=&quot;JPA 2.0 Presentations&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JPA 2.0 Presentations&lt;/a&gt; page for more details on the major new features of the JPA 2.0 specification and how they are being implemented in OpenJPA.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;JPA2.0Roadmap-IterationScheduleandContent&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;Iteration Schedule and Content&lt;/h2&gt;

&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt;&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Milestone1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Milestone 1&lt;/a&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 1&lt;/a&gt; (Dec. 1, 2008 - Dec. 19, 2008) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-800&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-800&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration1a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 1a&lt;/a&gt; (Dec. 22, 2008 - Jan. 2, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-831&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-831&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 2&lt;/a&gt; (Jan. 5, 2009 - Jan. 23, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-807&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-807&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Milestone2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Milestone 2&lt;/a&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 3&lt;/a&gt; (Jan. 26, 2009 - Feb. 13, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-808&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-808&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 4&lt;/a&gt; (Feb. 16, 2009 - Mar. 6, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-875&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-875&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 5&lt;/a&gt; (Mar. 9, 2009 - Apr. 3, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-956&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-956&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 6&lt;/a&gt; (Apr. 6, 2009 - May 1, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1007&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1007&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 7&lt;/a&gt; (May 4, 2009 - May 29, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1052&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1052&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Milestone3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Milestone 3&lt;/a&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 8&lt;/a&gt; (June 1, 2009 - July 3, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1105&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1105&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 9&lt;/a&gt; (July 6, 2009 - July 31, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1152&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1152&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 10&lt;/a&gt; (Aug. 3, 2009 - Aug. 28, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1209&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1209&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 11&lt;/a&gt; (Aug. 31, 2009 - Oct. 2, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1268&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1268&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Milestone 4
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 12&lt;/a&gt; (Oct. 5, 2009 - Oct. 30, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1337&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1337&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;#JPA2.0Roadmap-Iteration13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Iteration 13&lt;/a&gt; (Nov. 2, 2009 - Dec. 4, 2009) - &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1373&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1373&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Iteration 14 (Dec. 7, 2009 - Dec. 28, 2009)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Release Candidate&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Jump to &lt;a href=&quot;#JPA2.0Roadmap-TaskList&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Task List&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-Milestone1&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Milestone 1&lt;/b&gt; &lt;a name=&quot;JPA2.0Roadmap-Milestone1&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Milestone 1 release was never &quot;officially&quot; released, due to the JSR-317 terms of use issues, but the files were tagged in svn and can be checked out using:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;svn co https://svn.apache.org/repos/asf/openjpa/branches/2.0.0-M1/
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration1&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration1Summary%5COPENJPA800https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA800&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 1 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-800&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-800&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 1, OpenJPA includes many new JPA 2.0 (based on the 10/31/2008 spec draft) features.  Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;The current level of JPA 2.0 API.  You can compile against and use implemented methods of the new API.  Unimplemented methods will throw an UnsupportedOperationException.&lt;/li&gt;
	&lt;li&gt;Validation using the current JPA 2.0 orm and persistence schemas.  Version 2.0 persistence and orm files will validate using these new schemas.  Metadata elements provided in iteration 1 (collection-table and element-collection) will validate and can be specified in XML.&lt;/li&gt;
	&lt;li&gt;Support for nested embeddables.  An embeddable can now be nested within another embeddable.&lt;/li&gt;
	&lt;li&gt;Support for relationships within embeddables.  Embeddables can now contain relationships.&lt;/li&gt;
	&lt;li&gt;Collections of embeddables and basic types through the use of ElementCollection and CollectionTable.  Element collections and collection tables can be specified using annotations or in a version 2.0 orm XML.&lt;/li&gt;
	&lt;li&gt;Support for the Criteria API based on the current spec level, including the new constructs; KEY(), VALUE(), and CASE().  OpenJPA also includes the ability to convert queries constructed with the Criteria API to JPQL.&lt;/li&gt;
	&lt;li&gt;Support for JPA 2.0 JPQL.  Compilation of JPA 2.0 JPQL statements and execution of the new JPQL expressions including simple case expressions, general case expressions, coalesce, and the nullif expression.  In addition, the select expression allows mathematical operations and the result alias can be specified in the select expression and in the ORDER BY clause.  Execution of additional JPA 2.0 JPQL expressions will be added in future iterations.&lt;/li&gt;
	&lt;li&gt;Native sequence generators allow the database schema name to be specified on the annotation or in a version 2.0 orm XML.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration1a&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration1aSummary%5COPENJPA831https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA831&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 1a Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-831&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-831&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of the 1a iteration, the OpenJPA documentation has been updated to contain the most current JPA 2.0 schemas.&lt;/p&gt;


&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration2&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration2Summary%5COPENJPA807https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA807&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 2 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-807&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-807&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 2, OpenJPA includes several additional JPA 2.0 (based on the 10/31/2008 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Support for the JPA 2.0 level 2 cache interface.  Operations on the OpenJPA data cache are now available from the entity manager factory through a standard JPA interface.&lt;/li&gt;
	&lt;li&gt;Support for use of order column through a JPA annotations or orm mapping file elements.  Existing OpenJPA support for order columns has been extended to support the JPA standard OrderColumn definition.  This iteration supports a configurable base value attribue.  Support for the table and contiguous attributes will be provided in future iterations.&lt;/li&gt;
	&lt;li&gt;Enhanced map support.  The use of Map collections has been significantly enhanced.  This iteration includes use of the new MapKeyClass, MapKeyColumn, MapKeyJoinColumn, and MapKeyJoinColumns annotations and corresponding orm mapping file elements.&lt;/li&gt;
	&lt;li&gt;Support for JPQL INDEX() function within a query projection or predicate.  Allows the index of ordered columns to be projected or used as part of a query predicate.  Projection is currently not supported for element collection.  This support will be added in a future iteration.&lt;/li&gt;
	&lt;li&gt;Support for entity TYPE() expression.  Allows projection of or query criteria based on entity type.  OpenJPA does not currently allow selection of an abstract entity type.&lt;/li&gt;
	&lt;li&gt;Support for new javax.persistence standard properties.  Standard properties such as javax.persistence.jdbc.driver can now be specified as configuration properties.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-Milestone2&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Milestone 2&lt;/b&gt; &lt;a name=&quot;JPA2.0Roadmap-Milestone2&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Milestone 2 release will not be an official ASF release, but will be created as a Early Access 2 SNAPSHOT branch due to the JSR-317 terms of use restrictions.  A distribution of the Early Access 2 SNAPSHOT is available &lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/OpenJPA+2.0.0+Early+Access+2&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;here&lt;/a&gt; for download or the code can be checked out from svn.&lt;/p&gt;
&lt;table class=&quot;sectionMacro&quot; border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;5%&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;20%&quot;&gt;&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt;&lt;img src=&quot;http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Download.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;http://openjpa.apache.org/openjpa-200-early-access-2.html&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;Download Milestone 2&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;5%&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;20%&quot;&gt;&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt;&lt;img src=&quot;http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Pencil.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/2.0.0-EA2/&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;View SVN Files&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration3&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration3Summary%5COPENJPA808https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA808&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 3 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-808&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-808&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 3, OpenJPA includes several additional JPA 2.0 (based on the 10/31/2008 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Support for collection-valued parameters in JPQL using the IN expression.  A collection-valued parameter (List, Set, etc.) may now be used in conjunction with the IN expression within the where clause of a JPQL statement.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;JPA specification level is available through OpenJPA configuration.  The JPA specification level of the provider can now be retrieved via the openjpa.Specification property.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for derived identities including the use of MappedById.  OpenJPA now supports entities which have an identity that is derived from the id of another identity for one-to-one and many-to-one relationships with a parent-dependent type association.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for getSupportedProperties and getProperties methods on the EntityManager and EntityManagerFactory.  The active properties and their values, in addition to the full set of supported properties can be retrieved for the EntityManager and EntityManagerFactory.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;The OrderColumn annotation and equivalent XML now allows the specification of the table element.  The table element can be used to specify the join or collection table used to maintain the relationship.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for getHints and getSupportedHints on Query.  The active hints and their values, in addition to supported hints can be retrieved for a Query.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration4&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration4Summary%5COPENJPA875https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA875&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 4 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-875&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-875&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 4, OpenJPA includes several additional JPA 2.0 (based on the 10/31/2008 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Support new JPA LockModeType in find, lock and refresh methods in the EntityManager interface. A new &quot;mixed&quot; lock manager is introduced implementing the new mixed optimistic and pessimistic entity locking semantics.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;AttributeOverride enhanced to allow navigation of multiple levels of embeddables, use with map keys and values, and use with element collections.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;AssociationOverride enhanced to support specification of of a join table and override of embeddables within relationships.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Additional support of derived identities.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for general and qualified identification variables in JQPL selections.  KEY, ENTRY, and VALUE qualifiers&lt;br /&gt;
can now be used within the SELECT clause.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration5&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration5Summary%5COPENJPA956https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA956&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 5 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-956&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-956&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 5, OpenJPA includes several additional JPA 2.0 (based on the 03/13/2009 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Updated spec APIs and schemas based upon most current specification draft.  New, unimplemented methods will throw an UnsupportedOperationException.&lt;/li&gt;
	&lt;li&gt;A lock timeout hint value can now be specified on applicable entity manager and query methods.&lt;/li&gt;
	&lt;li&gt;Lock mode (including the new pessimistic lock modes) can be specified on query methods and named queries. This allows for fine-grained locking configuration at the method level.&lt;/li&gt;
	&lt;li&gt;The unwrap method can be used to get access to underlying OpenJPA entity manager and query interfaces.&lt;/li&gt;
	&lt;li&gt;JPQL queries support the selection of KEY, VALUE, and ENTRY map values.&lt;/li&gt;
	&lt;li&gt;Single entities or an entity graph may be detached from the entity manager.  Specifying the new cascade type of DETACH or ALL on relationships allows selective detachment of an entity graph.&lt;/li&gt;
	&lt;li&gt;The third argument of the JPQL SUBSTRING function is now optional.&lt;/li&gt;
	&lt;li&gt;JPQL queries have been enhanced to support the projection of element collections.&lt;/li&gt;
	&lt;li&gt;JPQL queries have been enhanced to support nested embeddables and relationships from embeddables.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration6&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration6Summary%5COPENJPA1007https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1007&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 6 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1007&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1007&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 6, OpenJPA includes several additional JPA 2.0 (based on the 03/13/2009 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Query timeout detection for additional databases. Query timeouts are more accurately detected and reported in DB2, Oracle, SQL Server, and Informix.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for scalar expressions in JPQL subqueries. Scalar expressions such as substring can now be used within a subquery.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Support for explicit access types on persistent types. The persistence access method to use can now be specified on a per-type and field/method level.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Updates to OrderColumn and EntityManager methods to match new spec draft.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;JPQL queries now support key/value paths as arguments to scalar functions.  KEY() and VALUE() can now be used to indicate that a map key or value should be used as an argument to a scalar function.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration7&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration7Summary%5COPENJPA1052https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1052&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 7 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1052&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1052&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 7, OpenJPA includes several additional JPA 2.0 (based on the 03/13/2009 spec draft) features. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;New MapKeyEnumerated and MapKeyTemporal annotations and equivalent XML elements for tagging the key of a map collection as either an enumerated or temporal type.&lt;/li&gt;
	&lt;li&gt;Base support for JSR-303 Bean Validation including basic configuration and lifecycle-based event validation.&lt;/li&gt;
	&lt;li&gt;Support the use of delimited identifiers within annotation attributes for a subset of mapping annotations when using the Derby and DB2 databases.  Support for additional databases will be added in future iterations.&lt;/li&gt;
	&lt;li&gt;JPQL subqueries now support derived path expressions and the use of KEY() on map collections.&lt;/li&gt;
	&lt;li&gt;OSGI bundle metadata has been added to the OpenJPA jar.  This simplifies the use of OpenJPA in an OSGi environment such as &lt;a href=&quot;http://felix.apache.org&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;Apache Felix&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;OrderBy no longer requires name attribute when applied to a collection of basic type.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-Milestone3&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Milestone 3&lt;/b&gt; &lt;a name=&quot;JPA2.0Roadmap-Milestone3&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Milestone 3 release is an official ASF release, but we encourage you to upgrade to the final 2.0.0 as soon as possible after it is released.  A distribution of the Milestone 3 is available &lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/OpenJPA+2.0.0+Milestone+3&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;here&lt;/a&gt; for download or the code can be checked out from svn.&lt;/p&gt;
&lt;table class=&quot;sectionMacro&quot; border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;5%&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;20%&quot;&gt;&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt;&lt;img src=&quot;http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Download.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;http://openjpa.apache.org/openjpa-200-milestone-3.html&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;Download Milestone 3&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;5%&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot; width=&quot;20%&quot;&gt;&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt;&lt;img src=&quot;http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Pencil.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/tags/2.0.0-M3/&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;View SVN Files&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot; valign=&quot;top&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;


&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration8&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration8Summary%5COPENJPA1105https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1105&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 8 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1105&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1105&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 8, OpenJPA includes several additional JPA 2.0 features and bug fixes. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Sub-project for JSR-303 (Bean Validation) testing with configurable bean validation providers.&lt;/li&gt;
	&lt;li&gt;Automatic detection of bean validation providers.&lt;/li&gt;
	&lt;li&gt;Support for bean validation groups, configurable through standard persistence.xml properties.&lt;/li&gt;
	&lt;li&gt;Bug fixes for attribute-overrides and embeddable processing.&lt;/li&gt;
	&lt;li&gt;Performance enhancements to class reflection utility.  Provides 17% performance gain in some benchmarks.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration9&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration9Summary%5COPENJPA1152https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1152&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 9 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1152&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1152&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 9, OpenJPA includes several additional JPA 2.0 features and bug fixes. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Bean Validation support for validation groups.  Specific validation groups can be targeted for lifecycle events.&lt;/li&gt;
	&lt;li&gt;A TraversableResolver is now registered with the bean validator.  The resolver ensures that only loaded attributes are validated.&lt;/li&gt;
	&lt;li&gt;A PersistenceProviderResolver and PersistenceProviderResolverHolder are available from the Geronimo Spec API. PersistenceProviderResolver can be used to return the list of persistence providers available in the runtime environment.&lt;/li&gt;
	&lt;li&gt;Availablility of ProviderUtil and PersistenceUnitUtil interfaces.  These interfaces provide methods to determine the load state of a persistent entity or attribute.  In addition, PersistenceUnitUtil can be used to get the identifier of an entity.&lt;/li&gt;
	&lt;li&gt;Significant improvements to OpenJPA's subquery processing.&lt;/li&gt;
	&lt;li&gt;OpenJPA now includes the ability to use a pluggable encryption provider.  This provider can be used to support encrypted database passwords in the persistence.xml. See the &lt;a href=&quot;http://openjpa.apache.org/builds/latest/docs/manual/ref_guide_encryption.html&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;Encryption Provider&lt;/a&gt; chapter in the documentation for more details.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration10&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration10Summary%5COPENJPA1209https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1209&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 10 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1209&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1209&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 10, OpenJPA includes several additional JPA 2.0 features and bug fixes. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Support for the Criteria and Metamodel API.  The Criteria and Metamodel API can be used in conjunction to create and execute strongly-typed programmatic queries.&lt;/li&gt;
	&lt;li&gt;Metamodel source file generation.  OpenJPA provides tooling to generate metamodel source classes.&lt;/li&gt;
	&lt;li&gt;Support for the TypedQuery and Tuple interfaces.  These interfaces are provided to manipulate typed queries and their results.&lt;/li&gt;
	&lt;li&gt;Automatic setting of compatibility options based upon persistence version.  Compatibility options are configured based on persistence version to provide backward compatibility for OpenJPA version 1.x applications.&lt;/li&gt;
	&lt;li&gt;Support for naming of unique constraints.&lt;/li&gt;
	&lt;li&gt;Lob, Temporal, and Enumeration can now be specified on element collections.&lt;/li&gt;
	&lt;li&gt;JPQL now supports multiple constructors in the query projection list.&lt;/li&gt;
	&lt;li&gt;Support for the shared-cache-mode element in the persistence.xml.  Provides configuration/enablement options for L2 cache.&lt;/li&gt;
	&lt;li&gt;Support for Cacheable annotation and CacheStoreMode/CacheRetriveMode properties.  Allows per class configuration of L2 cacheing and per-operation tuning of cache behavior.&lt;/li&gt;
	&lt;li&gt;Database updates including updates for Derby reserved words, usage of a new version of commons-pool and commons-dbcp, and a new Derby network server test profile.&lt;/li&gt;
	&lt;li&gt;Support for JDBC date, time, and timestamp literals within JPQL and Criteria queries.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration11&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration11Summary%5COPENJPA1268https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1268&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 11 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1268&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1268&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 11, OpenJPA includes several additional JPA 2.0 features and bug fixes. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;OpenJPA is based upon Proposed Final Draft 2 of &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=317&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;JSR-317&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Support for cascading detach using cascade-detach as specified in the orm.xml.&lt;/li&gt;
	&lt;li&gt;Assertion that relationships in MappedSuperclass are unidirectional.&lt;/li&gt;
	&lt;li&gt;OpenJPA was updated to the CR5 level of the bean validation specification.&lt;/li&gt;
	&lt;li&gt;A new code sample which showcases the use of embeddables.&lt;/li&gt;
	&lt;li&gt;Corrected an XML encoding issue which occurred when using XML data with SQL Server.&lt;/li&gt;
	&lt;li&gt;Many documentation updates.&lt;/li&gt;
	&lt;li&gt;Improved test coverage for many database platforms.  The current test matrix is available &lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/JPA+2.0+Test+Coverage&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-Milestone4&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Milestone 4&lt;/b&gt; &lt;a name=&quot;JPA2.0Roadmap-Milestone4&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration12&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration12Summary%5COPENJPA1337https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1337&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 12 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1337&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1337&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;With the completion of iteration 12, OpenJPA includes several additional JPA 2.0 features &lt;br /&gt;
and bug fixes. Here is a summary of the new features provided by OpenJPA:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Continued improvements to test coverage for additional databases.&lt;/li&gt;
	&lt;li&gt;Many documentation updates, notably for Criteria API and Metamodel tooling.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration13&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;JPA2.0Roadmap-Iteration13Summary%5COPENJPA1373https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FOPENJPA1373&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;b&gt;Iteration 13 Summary&lt;/b&gt; &amp;#45; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1373&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1373&lt;/a&gt;&lt;/h4&gt;


&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;h2&gt;&lt;a name=&quot;JPA2.0Roadmap-OpenJPA2.0Tasks&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;OpenJPA 2.0 Tasks &lt;a name=&quot;JPA2.0Roadmap-TaskList&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-JPA2.0SpecFeatures&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;JPA 2.0 Spec Features&lt;/h3&gt;

&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class='confluenceTh'&gt; Status &lt;/th&gt;
&lt;th class='confluenceTh'&gt; JIRA(s) &lt;/th&gt;
&lt;th class='confluenceTh'&gt; Effort &lt;/th&gt;
&lt;th class='confluenceTh'&gt; Summary &lt;/th&gt;
&lt;th class='confluenceTh'&gt; Area &lt;/th&gt;
&lt;th class='confluenceTh'&gt; JPA 2.0 Spec Reference(s) &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-962&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-962&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1115&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1115&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; New database object naming conventions (delimited-identifiers) &lt;/td&gt;
&lt;td class='confluenceTd'&gt; General &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 2.13, 12.2.1.13, 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1306&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1306&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added new javax.persistence.lock.scope property &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Locking &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.4.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1358&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1358&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added find method that accepts properties (no lock mode) &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1358&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1358&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; New refresh method that accepts properties (no lock mode) &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1358&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1358&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Verify cache mode properties support on find, refresh and Query &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.7.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1253&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1253&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Review @JoinColumn elements for behavioral changes &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.21 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1306&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1306&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Review clarifications to locking modes &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Locking &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.4.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Review chapter on deployment and bootstrapping contracts for updates. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; General &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 9 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1270&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1270&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Assert that relationships defined in a mapped superclass must be unidirectional. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; General &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 2.11.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Spec updated &lt;/td&gt;
&lt;td class='confluenceTd'&gt; TBD&lt;/td&gt;
&lt;td class='confluenceTd'&gt; New JPQL reserved identifiers. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 4.4.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1069&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1069&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Review @OrderBy for behavioral changes &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.38 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1274&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1274&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Test CascadeType.DETACH via orm.xml &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Testing &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Routine JPQL BNF update&lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Updated single_valued_path_expression definition &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 4.4.4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Routine JPQL BNF update &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; New JPQL reserved identifiers should not be used as result variables &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 4.4.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1272&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1272&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; attribute-override and association-override available from element-collection XML schema type &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1271&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1271&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support for CacheRetrieveMode and CacheStoreMode properties. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.7.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1264&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1264&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cacheable attribute added to entity element in orm.xml &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 12.2.3.3, 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1264&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1264&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cacheable annotation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.7, 11.1.7 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1266&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1266&lt;/a&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support for JDBC escape sequence for date/time literals (6/19 rev) &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 4.6.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1240&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1240&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Allow Lob, Temporal, Enumerated annotations to be applied to element collections annotations and in XML. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.16, 11.1.24, 11.1.47 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1264&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1264&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache mode elements added to persistence.xml &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Cache &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.7.1, 3.7.2, 8.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1228&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1228&lt;/a&gt;&lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Default value change of exclude-unlisted-classes element &lt;/td&gt;
&lt;td class='confluenceTd'&gt; General &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 8.2.1.6.1 (7/23) &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1251&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1251&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EntityManagerFactory getProperties returns Map of &amp;lt;String, Object&amp;gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EMF &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 7.4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1251&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1251&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added setProperty method &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1013&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1013&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Build strictly-typed Criteria API &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 6 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1014&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1014&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Build weakly-typed Criteria API &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 6 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1180&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1180&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added getParameters, getParameterValue, getParameter methods to Query interface &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Typed Parameters &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.1, 3.8.5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1009&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1009&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Populate canonical meta-model for strictly typed Criteria Query building &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Metamodel &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1010&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1010&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Instantiate meta-model classes for JPA 2.0 from source code annotations &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Metamodel &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1008&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1008&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Generate meta-model for JPA 2.0 &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Metamodel &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1235&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1235&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Optional name element to UniqueConstraint annotation and corresponding XML type. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.49, 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1107&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1107&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Provide TraversableResolver for use with Bean Validation Factory &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Spec API &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.6.1.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1013&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1013&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Modified getQueryBuilder to return updated criteria query builder &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EMF, Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 7.4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1010&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1010&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; New getMetamodel method &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EMF, Metamodel &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 7.4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1191&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1191&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Implement Typed Query interface &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Typed Query &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.1, 3.8.5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1191&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1191&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Implement Tuple interface &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Typed Query &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.1, 3.8.5 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1068&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1068&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support Bean Validation: Entity validation upon lifecycle events. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Bean Validation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.6, 3.2.9 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1082&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1082&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Validation target groups via persistence.xml or createEMF properties Map &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Bean Validation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.6.1.2, 8.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1013&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1013&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Modified createQuery to accept updated criteria query definition &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM, Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1013&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1013&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Modified getQueryBuilder to return updated criteria query builder &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM, Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1. &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-805&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-805&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-855&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-855&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-856&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-856&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-865&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-865&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-879&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-879&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-961&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-961&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-967&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-967&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-978&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-978&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1035&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1035&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1024&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1024&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1016&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1016&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL Updates &lt;/td&gt;
&lt;td class='confluenceTd'&gt; JPQL &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch. 4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-995&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-995&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; High &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Migrate existing Criteria Query implementation as OpenJPA extension &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Criteria &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Ch 6 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1069&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1069&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; OrderBy annotation applied to an element collection of basic type doesn't require property or field name &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.38 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1055&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1055&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added MapKeyEnumerated and MapKeyTemporal annotations and XML. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.30, 11.1.33, 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-937&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-937&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Allow use of AssociationOverrides with mapped superclass relationships. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-878&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-878&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-963&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-963&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt;  &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-964&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-964&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support default query hint for query timeout &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM, Query &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.8 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-926&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-926&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support persistent access types including @Access annotation and AccessType enum and XML &lt;/td&gt;
&lt;td class='confluenceTd'&gt; General &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 2.3, 11.1.1, 12.2.1.4, 12.2.2.4, 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1034&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1034&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Remove contiguous and base elements from OrderColumn annotation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 11.1.39 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1032&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1032&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Removal and revert behavior of getNamedParameters and getPositionalParameters &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Query &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1013&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1013&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Added getMetamodel method &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM, Metamodel &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-773&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-773&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Renamed clear method to detach &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-773&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-773&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Changed target-entity attribute to target-class in element-collection &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Mapping &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 12.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-773&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-773&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Update pessimistic lock mode names &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Locking &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.4.4 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-878&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-878&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Timeouts are in milliseconds. &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Query, Locking &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.8.8, 3.4.4.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-773&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-773&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Renamed cascade CLEAR to DETACH &lt;/td&gt;
&lt;td class='confluenceTd'&gt; EM &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.1.1, 3.2.6 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1077&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1077&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Validation-mode element support added to persistence.xml and to createEMF properties Map &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Bean Validation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.6.1.1, 8.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1102&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1102&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Low &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Support application/container provided ValidatorFactory &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Bean Validation &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 3.6.2 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1076&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1076&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Medium &lt;/td&gt;
&lt;td class='confluenceTd'&gt; PersistenceProviderResolver interface and PersistenceProviderResolverHolder class &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Spec API &lt;/td&gt;
&lt;td class='confluenceTd'&gt; 9.3 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;



&lt;p&gt;&lt;a href=&quot;/confluence/display/openjpa/JSR-317+20081031+Public+Draft+Tasks&quot; title=&quot;JSR-317 20081031 Public Draft Tasks&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Task list for JSR-317 10/31/2008 public draft&lt;/a&gt;&lt;/p&gt;



&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-OtherImprovements&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;Other Improvements&lt;/h3&gt;

&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class='confluenceTh'&gt; Status &lt;/th&gt;
&lt;th class='confluenceTh'&gt; JIRA &lt;/th&gt;
&lt;th class='confluenceTh'&gt; Summary &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;red&quot;&gt;Not Started&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1011&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1011&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Instantiate meta-model classes for JPA 2.0 from XML descriptors &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-766&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-766&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Tests that currently fail should be committed to the repository &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-5&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-5&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Allow compilation with JDK 6 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1114&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1114&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Bean Validation APIs should be an optional runtime dependency &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1113&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1113&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Reflection class performance improvement &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;


&lt;h3&gt;&lt;a name=&quot;JPA2.0Roadmap-GeneralTasks&quot; target=&quot;_top&quot;&gt;&lt;/a&gt;General Tasks&lt;/h3&gt;

&lt;table class='confluenceTable'&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class='confluenceTh'&gt; Status &lt;/th&gt;
&lt;th class='confluenceTh'&gt; JIRA &lt;/th&gt;
&lt;th class='confluenceTh'&gt; Summary &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;red&quot;&gt;Not Started&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-837&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-837&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; OpenJPA does not fully support database catalogs &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;red&quot;&gt;Not Started&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-910&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-910&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Allow multiple keys for the same property to be specified at different levels &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;Ongoing&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-773&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-773&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Upgrade to JPA 2 - umbrella task - includes updating spec API &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;blue&quot;&gt;In Progress&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-757&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-757&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Map existing OpenJPA extensions to new features of JPA 2.0 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;green&quot;&gt;Complete&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-857&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-857&lt;/a&gt; &lt;br clear=&quot;all&quot; /&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1208&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1208&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Detect and store JPA version &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class='confluenceTd'&gt; &lt;font color=&quot;red&quot;&gt;Not Started&lt;/font&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/OPENJPA-1103&quot; rel=&quot;nofollow&quot; target=&quot;_top&quot;&gt;OPENJPA-1103&lt;/a&gt; &lt;/td&gt;
&lt;td class='confluenceTd'&gt; Remove early-access disclaimer from the NOTICE files once the spec is released &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;!-- 
This is the original JIRA Query.  It did not query based on version or multiple status values.
#set( $jira = $rss.fetch(&quot;http://issues.apache.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?&amp;pid=12310351&amp;status=1&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;tempMax=1000&quot;) )
 --&gt;&lt;/p&gt;

     &lt;/div&gt;
     &lt;div id=&quot;commentsSection&quot; class=&quot;wiki-content pageSection&quot;&gt;
       &lt;div style=&quot;float: right;&quot;&gt;
            &lt;a href=&quot;http://cwiki.apache.org/confluence/users/viewnotifications.action&quot; class=&quot;grey&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Change Notification Preferences&lt;/a&gt;
       &lt;/div&gt;

       &lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/JPA+2.0+Roadmap&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;View Online&lt;/a&gt;
       |
       &lt;a href=&quot;http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=98034&amp;revisedVersion=176&amp;originalVersion=175&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;View Change&lt;/a&gt;
              |
       &lt;a href=&quot;http://cwiki.apache.org/confluence/display/openjpa/JPA+2.0+Roadmap?showComments=true&amp;amp;showCommentArea=true#addcomment&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Add Comment&lt;/a&gt;
            &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/CONF-OpenJPA-JPA-2-0-Roadmap-tp3948744p3948744.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3948375</id>
	<title>svn commit: r832878 - in /openjpa/trunk: openjpa-all/pom.xml openjpa-jdbc/pom.xml openjpa-persistence-jdbc/pom.xml openjpa/pom.xml</title>
	<published>2009-11-04T13:35:08Z</published>
	<updated>2009-11-04T13:35:08Z</updated>
	<author>
		<name>DWoods</name>
	</author>
	<content type="html">Author: dwoods
&lt;br&gt;Date: Wed Nov &amp;nbsp;4 21:35:07 2009
&lt;br&gt;New Revision: 832878
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832878&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832878&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-839 fix pom data so unprovided depends will be pulled automatically by maven and mark JAXB depends as optional
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-all/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa/pom.xml
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-all/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-all/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-all/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-all/pom.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-all/pom.xml Wed Nov &amp;nbsp;4 21:35:07 2009
&lt;br&gt;@@ -62,6 +62,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createDependencyReducedPom&amp;gt;true&amp;lt;/createDependencyReducedPom&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createSourcesJar&amp;gt;true&amp;lt;/createSourcesJar&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;keepDependenciesWithProvidedScope&amp;gt;true&amp;lt;/keepDependenciesWithProvidedScope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;promoteTransitiveDependencies&amp;gt;true&amp;lt;/promoteTransitiveDependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Have to do this again here, as these settings
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from shaded openjpa.jar get lost in the shading
&lt;br&gt;@@ -97,56 +98,47 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Only include openjpa.jar and its required dependencies here, which
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;will be used by maven-shade-plugin to determine the inclusions.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Only include openjpa.jar here, as the maven-shade-plugin will
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;determine the transitive dependencies to include from it.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.openjpa&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Non-OpenJPA JARs to pull in --&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;net.sourceforge.serp&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;serp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-collections&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-collections&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-pool&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-pool&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jta_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jpa_2.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- optional runtime dependencies --&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to manually add back optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jms_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- excluded optional runtime dependencies
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-validation_1.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- end optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/project&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/pom.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/pom.xml Wed Nov &amp;nbsp;4 21:35:07 2009
&lt;br&gt;@@ -42,10 +42,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;hsqldb&amp;lt;/groupId&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/pom.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/pom.xml Wed Nov &amp;nbsp;4 21:35:07 2009
&lt;br&gt;@@ -778,6 +778,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jakarta-regexp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Required for org.apache.openjpa.persistence.xmlmapping tests --&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;build&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;plugins&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa/pom.xml?rev=832878&amp;r1=832877&amp;r2=832878&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa/pom.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa/pom.xml Wed Nov &amp;nbsp;4 21:35:07 2009
&lt;br&gt;@@ -62,6 +62,23 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createDependencyReducedPom&amp;gt;true&amp;lt;/createDependencyReducedPom&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createSourcesJar&amp;gt;true&amp;lt;/createSourcesJar&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;keepDependenciesWithProvidedScope&amp;gt;true&amp;lt;/keepDependenciesWithProvidedScope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;promoteTransitiveDependencies&amp;gt;true&amp;lt;/promoteTransitiveDependencies&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Specify a subset of depends to include,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; which must match the &amp;lt;dependencies&amp;gt; section.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactSet&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;includes&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-lib&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-kernel&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-jdbc&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-persistence&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-persistence-jdbc&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-xmlstore&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-slice&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/includes&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/artifactSet&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- OpenJPA unique META-INF setup --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformers&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to concatinate the services resources:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; org.apache.openjpa.lib.conf.ProductDerivation
&lt;br&gt;@@ -108,13 +125,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-jdbc&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Need to exclude jaxb depends, so the following will not
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get included in the aggregate JAR by the shade plugin:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Need to exclude jaxb, so the following will not get included
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; as compile depends in the aggregate JAR by the shade plugin:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.xml.bind:jaxb-api:jar:2.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.xml.bind:jsr173_api:jar:1.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.activation:activation:jar:1.1
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; com.sun.xml.bind:jaxb-impl:jar:2.0.5
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;@@ -125,7 +141,42 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to manually add back optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- end optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.openjpa&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-persistence&amp;lt;/artifactId&amp;gt;
&lt;br&gt;@@ -146,52 +197,5 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-slice&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- JARs NOT included in aggregate JAR via maven-shade-plugin --&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;net.sourceforge.serp&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;serp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-collections&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-collections&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-pool&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-pool&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jta_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jpa_2.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jms_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-validation_1.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/project&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832878-in-openjpa-trunk-openjpa-all-pom-xml-openjpa-jdbc-pom-xml-openjpa-persistence-jdbl-tp3948375p3948375.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3948263</id>
	<title>svn commit: r832874 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/datacache/ openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ openjpa-kernel/src/main/resources/org/apa...</title>
	<published>2009-11-04T13:18:39Z</published>
	<updated>2009-11-04T13:18:39Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;New Revision: 832874
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832874&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832874&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1334: Refresh should ignore cache.retrieve.mode settings. Assorted changes in property processing for usability 
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -374,6 +374,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * The entities are never refreshed from DataCache if lock is being applied 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * (e.g. in a pessimistic transaction) and hence this setting only refers 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * to behavior when not locking.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * This flag can be used to overwrite RetrieveMode.BYPASS.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * By default, however, this falg is false. 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @since 1.2.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -387,8 +387,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean load(OpenJPAStateManager sm, BitSet fields,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FetchConfiguration fetch, int lockLevel, Object edata) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataCache cache = _mgr.selectCache(sm);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cache == null || sm.isEmbedded() 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| _ctx.getFetchConfiguration().getCacheRetrieveMode() == DataCacheRetrieveMode.BYPASS)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cache == null || sm.isEmbedded() || bypass(_ctx.getFetchConfiguration(), StoreManager.FORCE_LOAD_NONE))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return super.load(sm, fields, fetch, lockLevel, edata);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataCachePCData data = cache.get(sm.getObjectId());
&lt;br&gt;@@ -410,11 +409,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Collection&amp;lt;Object&amp;gt; loadAll(Collection&amp;lt;OpenJPAStateManager&amp;gt; sms, PCState state, int load,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		FetchConfiguration fetch, Object edata) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	if (isLocking(fetch) || 
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	 &amp;nbsp; (!isLocking(fetch) &amp;&amp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;		(load == StoreManager.FORCE_LOAD_REFRESH)
&lt;br&gt;- &amp;nbsp; &amp;nbsp;		&amp;&amp; !_ctx.getConfiguration().getRefreshFromDataCache())) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp; &amp;nbsp; return super.loadAll(sms, state, load, fetch, edata);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	if (bypass(fetch, load)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;return super.loadAll(sms, state, load, fetch, edata);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;OpenJPAStateManager, BitSet&amp;gt; unloaded = null;
&lt;br&gt;@@ -528,7 +524,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return failed;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Helper method to add an unloaded instance to the given map.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;@@ -691,6 +687,24 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Affirms if a load operation must bypass the L2 cache.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * If lock is active, always bypass.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;boolean bypass(FetchConfiguration fetch, int load) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Order of checks are important
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isLocking(fetch))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_ctx.getConfiguration().getRefreshFromDataCache()) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fetch.getCacheRetrieveMode() == DataCacheRetrieveMode.BYPASS)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (load == StoreManager.FORCE_LOAD_REFRESH)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return whether the context is locking loaded data.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private boolean isLocking(FetchConfiguration fetch) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -34,6 +34,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.ReferenceMap;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Reflectable;
&lt;br&gt;+import org.apache.openjpa.lib.util.Localizer.Message;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashMap;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.util.GeneralException;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.util.UserException;
&lt;br&gt;@@ -282,7 +283,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.get(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -327,9 +328,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Wrap the given reflection exception as a runtime exception.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static RuntimeException wrapReflectionException(Throwable t) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static RuntimeException wrapReflectionException(Throwable t, Message message) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (t instanceof InvocationTargetException)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t = ((InvocationTargetException) t).getTargetException(); &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t = ((InvocationTargetException) t).getTargetException(); &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t.initCause(new IllegalArgumentException(message.getMessage()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (t instanceof RuntimeException)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (RuntimeException) t;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new GeneralException(t);
&lt;br&gt;@@ -345,7 +347,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getBoolean(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -359,7 +361,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getByte(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -373,7 +375,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getChar(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -387,7 +389,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getDouble(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -401,7 +403,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getFloat(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -415,7 +417,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getInt(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -429,7 +431,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getLong(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -443,7 +445,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return field.getShort(target);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-field&amp;quot;, target, field));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -457,7 +459,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getter.invoke(target, (Object[]) null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;get-method&amp;quot;, target, getter));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -535,7 +537,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.set(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value == null ? &amp;quot;&amp;quot; : value.getClass()}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -549,7 +552,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setBoolean(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;boolean&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -563,7 +566,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setByte(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;byte&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -577,7 +580,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setChar(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;char&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -591,7 +594,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setDouble(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;double&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -605,7 +608,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setFloat(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;float&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -619,7 +622,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setInt(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;int&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -633,7 +636,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setLong(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;long&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -647,7 +650,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;field.setShort(target, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-field&amp;quot;, new Object[]{target, field, value, &amp;quot;short&amp;quot;}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -760,7 +763,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setter.invoke(target, new Object[] { value });
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable t) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw wrapReflectionException(t, _loc.get(&amp;quot;set-method&amp;quot;, new Object[]{target, setter, value, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value == null ? &amp;quot;&amp;quot; : value.getClass()}));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -831,16 +835,16 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * it is ignored.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public static Set&amp;lt;String&amp;gt; getBeanStylePropertyNames(Class c) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static Set&amp;lt;String&amp;gt; getBeanStylePropertyNames(Class&amp;lt;?&amp;gt; c) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (c == null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Collections.EMPTY_SET;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Collections.emptySet();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;String&amp;gt; result = beanPropertiesNameCache.get(c);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (result != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method[] methods = c.getMethods();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (methods == null || methods.length &amp;lt; 2)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Collections.EMPTY_SET;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Collections.emptySet();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = new TreeSet&amp;lt;String&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Method m : methods) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (m.getName().startsWith(&amp;quot;get&amp;quot;)) {
&lt;br&gt;@@ -848,9 +852,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String prop = StringUtils.capitalize(m.getName()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.substring(&amp;quot;get&amp;quot;.length()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class rtype = m.getReturnType();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; rtype = m.getReturnType();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method setter = c.getMethod(&amp;quot;set&amp;quot;+prop, new Class[]{rtype});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method setter = c.getMethod(&amp;quot;set&amp;quot;+prop, new Class&amp;lt;?&amp;gt;[]{rtype});
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (setter.getReturnType() == void.class || 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setter.getReturnType().isAssignableFrom(c))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result.add(prop);
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -211,4 +211,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;to creating any Entities. &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;temp-file-creation: The temporary file &amp;quot;{0}&amp;quot; was created and it may not get \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;cleaned up properly.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;+get-field: Error while getting value of field {1} from instance {0} by reflection. &amp;nbsp; &amp;nbsp;
&lt;br&gt;+get-method: Error while getting value by getter method {1} on instance {0} by reflection. &amp;nbsp; &amp;nbsp;
&lt;br&gt;+set-field: Error while setting value {2} of {3} on field {1} of instance {0} by reflection. &amp;nbsp; &amp;nbsp;
&lt;br&gt;+set-method: Error while setting value {2} of {3} by setter method {1} of instance {0} by reflection. &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestDataCacheBehavesIdentical.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -56,9 +56,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final boolean DIRTY = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final boolean REFRESH_FROM_DATACACHE = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final LockModeType NOLOCK = null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Class ENTITY_NOT_FOUND_ERROR =
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityNotFoundException.class;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Class NO_ERROR = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final Class&amp;lt;?&amp;gt; ENTITY_NOT_FOUND_ERROR = EntityNotFoundException.class;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final Class&amp;lt;?&amp;gt; NO_ERROR = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final String MARKER_DATACACHE = &amp;quot;in DataCache&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final String MARKER_DATABASE &amp;nbsp;= &amp;quot;in Database&amp;quot;;
&lt;br&gt;@@ -376,7 +375,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDirtyRefreshWithNoLockHitsDatabase() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyRefresh(WITH_DATACACHE, NOLOCK, DIRTY, !REFRESH_FROM_DATACACHE,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MARKER_DATACACHE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MARKER_DATABASE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDirtyRefreshWithNoLockHitsDataCache() {
&lt;br&gt;@@ -464,7 +463,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @param lock
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void verifyDeleteDetectionOnRefresh(boolean useDataCache, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean dirty, LockModeType lock, Class expectedExceptionType) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean dirty, LockModeType lock, Class&amp;lt;?&amp;gt; expectedExceptionType) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerFactorySPI emf = (useDataCache)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? emfWithDataCache : emfWithoutDataCache;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -522,49 +521,36 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testDeleteIsNotDetectedOnCleanRefreshWithoutLockWithDataCache()
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY, NOLOCK,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NO_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testDeleteIsNotDetectedOnCleanRefreshWithoutLockWithDataCache() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY, NOLOCK, NO_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnCleanRefreshWithLockWithDataCache() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType.READ, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY, LockModeType.READ, &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, !DIRTY, LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testDeleteIsNotDetectedOnDirtyRefreshWithoutLockWithDataCache()
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, NOLOCK, NO_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnDirtyRefreshWithoutLockWithDataCache() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, NOLOCK, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnDirtyRefreshWithLockWithDataCache() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.READ,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.READ, &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnDirtyRefreshWitDataCache() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.READ,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.READ, &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(WITH_DATACACHE, DIRTY, LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnCleanRefreshWithoutLockWithoutDataCache()
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE, !DIRTY, NOLOCK,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnCleanRefreshWithoutLockWithoutDataCache() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE, !DIRTY, NOLOCK, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testDeleteIsDetectedOnCleanRefreshWithLockWithoutDataCache() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;!DIRTY, LockModeType.READ, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;!DIRTY, LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE, !DIRTY, LockModeType.READ, &amp;nbsp;ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verifyDeleteDetectionOnRefresh(!WITH_DATACACHE, !DIRTY, LockModeType.WRITE, ENTITY_NOT_FOUND_ERROR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -18,12 +18,26 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.persistence.simple;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import java.sql.Connection;
&lt;br&gt;+import java.sql.SQLException;
&lt;br&gt;+import java.util.Map;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.CacheRetrieveMode;
&lt;br&gt;+import javax.persistence.CacheStoreMode;
&lt;br&gt;+import javax.persistence.EntityManager;
&lt;br&gt;+
&lt;br&gt;+import org.apache.openjpa.kernel.Broker;
&lt;br&gt;+import org.apache.openjpa.persistence.JPAProperties;
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAEntityManager;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.test.SingleEMTestCase;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;public class TestRefresh extends SingleEMTestCase {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp(CLEAR_TABLES, Item.class, &amp;quot;openjpa.AutoDetach&amp;quot;, &amp;quot;commit&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp(CLEAR_TABLES, Item.class, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;openjpa.AutoDetach&amp;quot;, &amp;quot;commit&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;openjpa.DataCache&amp;quot;, &amp;quot;true&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;openjpa.RemoteCommitProvider&amp;quot;, &amp;quot;sjvm&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testFlushRefreshNewInstance() {
&lt;br&gt;@@ -36,4 +50,79 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Test Data&amp;quot;, item.getItemData());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Refresh always bypass L2 cache.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * According to JPA 2.0 Spec Section 3.7.2:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;quot;The retrieveMode property is ignored for the refresh method,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;nbsp;which always causes data to be retrieved from the database, not the cache.&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testRefreshBypassL2Cache() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String original = &amp;quot;Original L2 Cached Data&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String sneakUpdate = &amp;quot;Sneak Update&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Item item = new Item();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item.setItemData(original);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.persist(item);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertCached(Item.class, item.getItemId());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Sneakily update with SQL
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String sql = &amp;quot;UPDATE I_ITEM SET I_DATA=?1 WHERE I_ID=?2&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int updateCount = em.createNativeQuery(sql)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.setParameter(1, sneakUpdate)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.setParameter(2, item.getItemId())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.executeUpdate();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(1, updateCount);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Find will find the L2 cached data
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item = em.find(Item.class, item.getItemId());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(original, item.getItemData());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// But refresh will get the actual database record
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.refresh(item);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(sneakUpdate, item.getItemData());
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Even if cache retrieve mode is set to USE
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.setProperty(JPAProperties.CACHE_RETRIEVE_MODE, CacheRetrieveMode.USE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.refresh(item);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(sneakUpdate, item.getItemData());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testCacheRetrieveModeSetting() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManager em = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.setProperty(JPAProperties.CACHE_RETRIEVE_MODE, CacheRetrieveMode.USE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Object&amp;gt; properties = em.getProperties();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!properties.containsKey(JPAProperties.CACHE_RETRIEVE_MODE)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(properties);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Expected &amp;quot; + JPAProperties.CACHE_RETRIEVE_MODE + &amp;quot; properties be returned&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object mode = properties.get(JPAProperties.CACHE_RETRIEVE_MODE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(mode, CacheRetrieveMode.USE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testCacheStoreModeSetting() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManager em = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.setProperty(JPAProperties.CACHE_STORE_MODE, CacheStoreMode.USE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Object&amp;gt; properties = em.getProperties();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!properties.containsKey(JPAProperties.CACHE_STORE_MODE)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(properties);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Expected &amp;quot; + JPAProperties.CACHE_STORE_MODE + &amp;quot; properties be returned&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object mode = properties.get(JPAProperties.CACHE_STORE_MODE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(mode, CacheStoreMode.USE);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertCached(Class&amp;lt;?&amp;gt; cls, Object oid) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(cls + &amp;quot;:&amp;quot; + oid + &amp;quot; should be in L2 cache, but not&amp;quot;, emf.getCache().contains(cls, oid));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertNotCached(Class&amp;lt;?&amp;gt; cls, Object oid) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(cls + &amp;quot;:&amp;quot; + oid + &amp;quot; should not be in L2 cache, but is&amp;quot;, !emf.getCache().contains(cls, oid));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -33,6 +33,7 @@
&lt;br&gt;&amp;nbsp;import java.util.Arrays;
&lt;br&gt;&amp;nbsp;import java.util.Collection;
&lt;br&gt;&amp;nbsp;import java.util.EnumSet;
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.IdentityHashMap;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;import java.util.Set;
&lt;br&gt;@@ -49,6 +50,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.Metamodel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.commons.lang.StringUtils;
&lt;br&gt;+import org.apache.commons.logging.LogFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.Compatibility;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.OpenJPAConfiguration;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.ee.ManagedRuntime;
&lt;br&gt;@@ -105,11 +107,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private DelegatingBroker _broker;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private EntityManagerFactoryImpl _emf;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Map&amp;lt;FetchConfiguration,FetchPlan&amp;gt; _plans = new IdentityHashMap&amp;lt;FetchConfiguration,FetchPlan&amp;gt;(1);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private RuntimeExceptionTranslator _ret = PersistenceExceptions.getRollbackTranslator(this);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected final String RETRIEVE_MODE_PROP = &amp;quot;javax.persistence.cache.retrieveMode&amp;quot;;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected final String STORE_MODE_PROP = &amp;quot;javax.persistence.cache.storeMode&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public EntityManagerImpl() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// for Externalizable
&lt;br&gt;@@ -732,10 +730,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void refresh(Object entity) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.assertWriteOperation();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.refresh(entity, this);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;refresh(entity, null, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void refresh(Object entity, LockModeType mode) {
&lt;br&gt;@@ -748,11 +743,19 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void refresh(Object entity, LockModeType mode, Map&amp;lt;String, Object&amp;gt; properties) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(&amp;quot;refresh&amp;quot;, entity);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.assertWriteOperation();
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configureCurrentFetchPlan(pushFetchPlan(), properties, mode, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataCacheRetrieveMode rmode = getFetchPlan().getCacheRetrieveMode();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (DataCacheRetrieveMode.USE.equals(rmode) || rmode == null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getFetchPlan().setCacheRetrieveMode(DataCacheRetrieveMode.BYPASS);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (rmode != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log log = _broker.getConfiguration().getConfigurationLog();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.warn(_loc.get(&amp;quot;cache-retrieve-override&amp;quot;, Exceptions.toString(entity)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.refresh(entity, this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;@@ -1121,7 +1124,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public LockModeType getLockMode(Object entity) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.assertActiveTransaction();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(&amp;quot;getLockMode&amp;quot;, entity);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return MixedLockLevelsHelper.fromLockLevel(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.getLockLevel(entity));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -1132,13 +1135,13 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void lock(Object entity) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(&amp;quot;lock&amp;quot;, entity);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.lock(entity, this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void lock(Object entity, LockModeType mode, int timeout) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(&amp;quot;lock&amp;quot;, entity);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configureCurrentFetchPlan(pushFetchPlan(), null, mode, false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;@@ -1150,7 +1153,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void lock(Object entity, LockModeType mode, Map&amp;lt;String, Object&amp;gt; properties) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotCloseInvoked();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(entity);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertValidAttchedEntity(&amp;quot;lock&amp;quot;, entity);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_broker.assertActiveTransaction();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configureCurrentFetchPlan(pushFetchPlan(), properties, mode, false);
&lt;br&gt;@@ -1315,11 +1318,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Throw IllegalArgumentExceptionif if entity is not a valid entity or
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * if it is detached.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertValidAttchedEntity(Object entity) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertValidAttchedEntity(String call, Object entity) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAStateManager sm = _broker.getStateManager(entity);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (sm == null || !sm.isPersistent() || sm.isDetached()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(_loc.get(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;invalid_entity_argument&amp;quot;).getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(_loc.get(&amp;quot;invalid_entity_argument&amp;quot;, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;call, entity == null ? &amp;quot;null&amp;quot; : Exceptions.toString(entity)).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -1556,12 +1559,36 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return createQuery(jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Get the properties used currently by this entity manager.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * The property keys and their values are harvested from kernel artifacts namely
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * the Broker and FetchPlan by reflection.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * These property keys and values that denote the bean properties/values of the kernel artifacts
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * are converted to the original keys/values that user used to set the properties.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Map&amp;lt;String, Object&amp;gt; getProperties() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map props = _broker.getProperties();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,Object&amp;gt; props = _broker.getProperties();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (String s : _broker.getSupportedProperties()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method getter = Reflection.findGetter(this.getClass(), getBeanPropertyName(s), false);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getter != null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props.put(s, Reflection.get(this, getter));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String kernelKey = getBeanPropertyName(s);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method getter = Reflection.findGetter(this.getClass(), kernelKey, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getter != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String userKey = JPAProperties.getUserName(kernelKey);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object kvalue &amp;nbsp;= Reflection.get(this, getter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props.put(userKey.equals(kernelKey) ? s : userKey, JPAProperties.convertToUserValue(userKey, kvalue));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FetchPlan fetch = getFetchPlan();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; fetchType = fetch.getClass();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;String&amp;gt; fProperties = Reflection.getBeanStylePropertyNames(fetchType);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (String s : fProperties) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String kernelKey = getBeanPropertyName(s);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method getter = Reflection.findGetter(fetchType, kernelKey, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getter != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String userKey = JPAProperties.getUserName(kernelKey);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object kvalue &amp;nbsp;= Reflection.get(fetch, getter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props.put(userKey.equals(kernelKey) ? s : userKey, JPAProperties.convertToUserValue(userKey, kvalue));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return props;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -1621,17 +1648,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private void configureCurrentCacheModes(FetchPlan fetch, Map&amp;lt;String, Object&amp;gt; properties) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (properties == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CacheRetrieveMode rMode = JPAProperties.get(CacheRetrieveMode.class, JPAProperties.CACHE_RETRIEVE_MODE, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CacheRetrieveMode rMode = JPAProperties.getEnumValue(CacheRetrieveMode.class, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.CACHE_RETRIEVE_MODE, properties);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (rMode != null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fetch.setCacheRetrieveMode(JPAProperties.convertValue(DataCacheRetrieveMode.class, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fetch.setCacheRetrieveMode(JPAProperties.convertToKenelValue(DataCacheRetrieveMode.class, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.CACHE_RETRIEVE_MODE, rMode));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.remove(JPAProperties.CACHE_RETRIEVE_MODE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CacheStoreMode sMode = JPAProperties.get(CacheStoreMode.class, JPAProperties.CACHE_STORE_MODE, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CacheStoreMode sMode = JPAProperties.getEnumValue(CacheStoreMode.class, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.CACHE_STORE_MODE, properties);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (sMode != null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fetch.setCacheStoreMode(JPAProperties.convertValue(DataCacheStoreMode.class, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fetch.setCacheStoreMode(JPAProperties.convertToKenelValue(DataCacheStoreMode.class, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.CACHE_STORE_MODE, sMode));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.remove(JPAProperties.CACHE_STORE_MODE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -1670,6 +1697,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private boolean setKernelProperty(Object target, String original, Object value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String beanProp = getBeanPropertyName(original);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.record(beanProp, original);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; kType &amp;nbsp;= null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object &amp;nbsp; kValue = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method setter = Reflection.findSetter(target.getClass(), beanProp, false);
&lt;br&gt;@@ -1694,20 +1722,25 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Extract a bean-style property name from the given string.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * If the given string is &amp;lt;code&amp;gt;&amp;quot;a.b.xyz&amp;quot;&amp;lt;/code&amp;gt; then returns &amp;lt;code&amp;gt;&amp;quot;xyz&amp;quot;&amp;lt;/code&amp;gt; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;String getBeanPropertyName(String s) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.isValidKey(s)) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return JPAProperties.getBeanProperty(s);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;String getBeanPropertyName(String user) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String result = user;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.isValidKey(user)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = JPAProperties.getBeanProperty(user);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int dot = user.lastIndexOf('.');
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dot != -1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = user.substring(dot+1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int dot = s.lastIndexOf('.');
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dot == -1 ? s : s.substring(dot+1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return result; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Convert the given value to a value consumable by OpenJPA kernel constructs.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Object convertUserValue(String key, Object value, Class&amp;lt;?&amp;gt; targetType) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.isValidKey(key)) 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return JPAProperties.convertValue(targetType, key, value);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return JPAProperties.convertToKenelValue(targetType, key, value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (value instanceof String) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (&amp;quot;null&amp;quot;.equals(value)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/JPAProperties.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -18,6 +18,7 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.persistence;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.CacheRetrieveMode;
&lt;br&gt;@@ -68,13 +69,29 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static final String VALIDATE_PRE_PERSIST = PREFIX + &amp;quot;validation.group.pre-persist&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static final String VALIDATE_PRE_REMOVE &amp;nbsp;= PREFIX + &amp;quot;validation.group.pre-remove&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static final String VALIDATE_PRE_UPDATE &amp;nbsp;= PREFIX + &amp;quot;validation.group.pre-update&amp;quot;;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static final String VALIDATE_GROUP_DEFAULT = &amp;quot;javax.validation.groups.Default&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static Map&amp;lt;String,String&amp;gt; _names = new HashMap&amp;lt;String, String&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Record the given kernel property key (which is a bean property name without any suffix)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * corresponding to the given original JPA/OpenJPA property used by the user to set the values.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void record(String kernel, String user) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_names.put(kernel, user);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Gets the original JPA Property name corresponding to the kernel property key 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * (which is a bean property name without any suffix).
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static String getUserName(String beanProperty) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _names.containsKey(beanProperty) ? _names.get(beanProperty) : beanProperty;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Is the given key appears to be a valid JPA specification defined key?
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @param key
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @return true if the given string merely prefixed with &amp;lt;code&amp;gt;javax.persistence.&amp;lt;/code&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Does not really check all the keys defined in the specification.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;@@ -101,16 +118,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return buf.toString();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E get(Class&amp;lt;E&amp;gt; type, String key, Map&amp;lt;String,Object&amp;gt; prop) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, null, key, prop);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Convert the given user value to a value consumable by OpenJPA kernel constructs.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @return the same value if the given key is not a valid JPA property key or the value is null.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public static &amp;lt;T&amp;gt; T &amp;nbsp;convertValue(Class&amp;lt;T&amp;gt; resultType, String key, Object value) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static &amp;lt;T&amp;gt; T &amp;nbsp;convertToKenelValue(Class&amp;lt;T&amp;gt; resultType, String key, Object value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (value == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.isValidKey(key)) {
&lt;br&gt;@@ -124,7 +137,29 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (T)value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Convert the given kernel value to a value visible to the user.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return the same value if the given key is not a valid JPA property key or the value is null.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static Object convertToUserValue(String key, Object value) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (value == null)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.isValidKey(key)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// works because enum values are identical String
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (value instanceof DataCacheRetrieveMode) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return CacheRetrieveMode.valueOf(value.toString());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (value instanceof DataCacheStoreMode) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return CacheStoreMode.valueOf(value.toString());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Get the value of the given key from the given properties after converting it to the given
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * enumerated value.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E getEnumValue(Class&amp;lt;E&amp;gt; type, String key, Map&amp;lt;String,Object&amp;gt; prop) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, null, key, prop);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -140,14 +175,28 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E getEnumValue(Class&amp;lt;E&amp;gt; type, E[] values, String key, Map&amp;lt;String,Object&amp;gt; prop) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (prop == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, values, key, prop.get(key));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, values, prop.get(key));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E &amp;nbsp;getEnumValue(Class&amp;lt;E&amp;gt; type, String key, Object val) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, null, key, val);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Gets a enum value of the given type from the given value.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Converts the original value from a String, if necessary.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return null if the key does not exist in the given properties.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E &amp;nbsp;getEnumValue(Class&amp;lt;E&amp;gt; type, Object val) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getEnumValue(type, null, val);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E &amp;nbsp;getEnumValue(Class&amp;lt;E&amp;gt; type, E[] values, String key, Object val) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Gets a enum value of the given type from the given value.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Converts the original value from a String or ordinal number, if necessary.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Conversion from an integral number to enum value is only attempted if the allowed enum values
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * are provided as non-null, non-empty array. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return null if the key does not exist in the given properties.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static &amp;lt;E extends Enum&amp;lt;E&amp;gt;&amp;gt; E &amp;nbsp;getEnumValue(Class&amp;lt;E&amp;gt; type, E[] values, Object val) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (val == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (type.isInstance(val))
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -525,8 +525,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return whether the given persistence unit uses an OpenJPA provider.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static boolean isOpenJPAPersistenceProvider
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(PersistenceUnitInfo pinfo, ClassLoader loader) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static boolean isOpenJPAPersistenceProvider(PersistenceUnitInfo pinfo, ClassLoader loader) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String provider = pinfo.getPersistenceProviderClassName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (StringUtils.isEmpty(provider) || PersistenceProviderImpl.class.getName().equals(provider))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;@@ -742,11 +741,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;startPersistenceUnit()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// case 'property' for 'properties' is handled in startElement()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'c': // class
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (&amp;quot;class&amp;quot;.equals(name))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.addManagedClassName(currentText());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else // FIXME - caching
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new javax.persistence.PersistenceException(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;Not implemented yet&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.addManagedClassName(currentText());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'e': // exclude-unlisted-classes
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setExcludeUnlistedClasses(currentText());
&lt;br&gt;@@ -754,8 +749,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'j':
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (&amp;quot;jta-data-source&amp;quot;.equals(name))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setJtaDataSourceName(currentText());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else // jar-file
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else { // jar-file 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.addJarFileName(currentText());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (IllegalArgumentException iae) {
&lt;br&gt;@@ -774,12 +768,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setPersistenceProviderClassName(currentText());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 's' : // shared-cache-mode
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setSharedCacheMode(JPAProperties.getEnumValue(SharedCacheMode.class, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.CACHE_MODE, currentText()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setSharedCacheMode(JPAProperties.getEnumValue(SharedCacheMode.class, currentText()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'v': // validation-mode
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setValidationMode(JPAProperties.getEnumValue(ValidationMode.class,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.VALIDATE_MODE, currentText()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_info.setValidationMode(JPAProperties.getEnumValue(ValidationMode.class, currentText()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -307,8 +307,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPAProperties.PROVIDER.equals(key))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setPersistenceProviderClassName((String) val);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (JPAProperties.TRANSACTION_TYPE.equals(key)) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setTransactionType(JPAProperties.getEnumValue(PersistenceUnitTransactionType.class, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPAProperties.TRANSACTION_TYPE, key));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setTransactionType(JPAProperties.getEnumValue(PersistenceUnitTransactionType.class, key));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (JPAProperties.DATASOURCE_JTA.equals(key)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (val instanceof String) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setJtaDataSourceName((String) val);
&lt;br&gt;@@ -322,9 +321,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setNonJtaDataSource((DataSource) val);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (JPAProperties.VALIDATE_MODE.equals(key)) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setValidationMode(JPAProperties.getEnumValue(ValidationMode.class, JPAProperties.VALIDATE_MODE, val));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setValidationMode(JPAProperties.getEnumValue(ValidationMode.class, val));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (JPAProperties.CACHE_MODE.equals(key)) { 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSharedCacheMode(JPAProperties.getEnumValue(SharedCacheMode.class, JPAProperties.CACHE_MODE, val));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSharedCacheMode(JPAProperties.getEnumValue(SharedCacheMode.class, val));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_props.put(key, val);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=832874&amp;r1=832873&amp;r2=832874&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties Wed Nov &amp;nbsp;4 21:18:38 2009
&lt;br&gt;@@ -173,8 +173,8 @@
&lt;br&gt;&amp;nbsp;non-unique-result: Query &amp;quot;{0}&amp;quot; selected {1} results, but expected unique result.
&lt;br&gt;&amp;nbsp;unwrap-em-invalid: EntityManager can not be unwrapped to an instance of &amp;quot;{0}&amp;quot;.
&lt;br&gt;&amp;nbsp;unwrap-query-invalid: Query can not be unwrapped to an instance of &amp;quot;{0}&amp;quot;.
&lt;br&gt;-invalid_entity_argument: Object being locked must be an valid and not detached \
&lt;br&gt;- &amp;nbsp; &amp;nbsp;entity.
&lt;br&gt;+invalid_entity_argument: {0} can not be invoked on &amp;quot;{1}&amp;quot;. This entity is either \
&lt;br&gt;+	detached or not persistent or null.
&lt;br&gt;&amp;nbsp;dup-pu: The persistence unit &amp;quot;{0}&amp;quot; was found multiple times in the following \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;resources &amp;quot;{1}&amp;quot;, but persistence unit names should be unique. The first \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;persistence unit matching the provided name in &amp;quot;{2}&amp;quot; is being used.
&lt;br&gt;@@ -223,3 +223,4 @@
&lt;br&gt;&amp;nbsp;create-emf-error: Failed to create a provider for &amp;quot;{0}&amp;quot;.
&lt;br&gt;&amp;nbsp;invalid-version-attribute: Persistence version attribute value &amp;quot;{0}&amp;quot; is not valid. &amp;nbsp;Using version &amp;quot;{1}&amp;quot; by default.
&lt;br&gt;&amp;nbsp;not-jpql-or-criteria-query: Query is neither a JPQL SELECT nor a Criteria API query.
&lt;br&gt;+cache-retrieve-override: The setting of CacheRetrieveMode.USE is ignored and set to BYPASS for refresh operation. &amp;nbsp;
&lt;br&gt;\ No newline at end of file
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832874-in-openjpa-trunk-openjpa-kernel-src-main-java-org-apache-openjpa-conf-openjpa-ker-tp3948263p3948263.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3947779</id>
	<title>svn commit: r832866 - /openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml</title>
	<published>2009-11-04T12:00:05Z</published>
	<updated>2009-11-04T12:00:05Z</updated>
	<author>
		<name>DWoods</name>
	</author>
	<content type="html">Author: dwoods
&lt;br&gt;Date: Wed Nov &amp;nbsp;4 20:00:04 2009
&lt;br&gt;New Revision: 832866
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832866&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832866&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-839 o-p-j needs an explicit depends on jaxb for scope=test
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml?rev=832866&amp;r1=832865&amp;r2=832866&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml?rev=832866&amp;r1=832865&amp;r2=832866&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/pom.xml Wed Nov &amp;nbsp;4 20:00:04 2009
&lt;br&gt;@@ -688,6 +688,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jakarta-regexp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Required for org.apache.openjpa.persistence.xmlmapping tests --&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;build&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;plugins&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832866-openjpa-branches-1-3-x-openjpa-persistence-jdbc-pom-xml-tp3947779p3947779.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3947578</id>
	<title>svn commit: r832854 - in /openjpa/branches/1.3.x: openjpa-all/pom.xml openjpa-jdbc/pom.xml openjpa/pom.xml</title>
	<published>2009-11-04T11:33:58Z</published>
	<updated>2009-11-04T11:33:58Z</updated>
	<author>
		<name>DWoods</name>
	</author>
	<content type="html">Author: dwoods
&lt;br&gt;Date: Wed Nov &amp;nbsp;4 19:33:57 2009
&lt;br&gt;New Revision: 832854
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832854&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832854&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-839 fix pom data so unprovided depends will be pulled automatically by maven
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-all/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-jdbc/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa/pom.xml
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-all/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-all/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-all/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-all/pom.xml (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-all/pom.xml Wed Nov &amp;nbsp;4 19:33:57 2009
&lt;br&gt;@@ -62,6 +62,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createDependencyReducedPom&amp;gt;true&amp;lt;/createDependencyReducedPom&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createSourcesJar&amp;gt;true&amp;lt;/createSourcesJar&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;keepDependenciesWithProvidedScope&amp;gt;true&amp;lt;/keepDependenciesWithProvidedScope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;promoteTransitiveDependencies&amp;gt;true&amp;lt;/promoteTransitiveDependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Have to do this again here, as these settings
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from shaded openjpa.jar get lost in the shading
&lt;br&gt;@@ -97,47 +98,47 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Only include openjpa.jar and its required dependencies here, which
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;will be used by maven-shade-plugin to determine the inclusions.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Only include openjpa.jar here, as the maven-shade-plugin will
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;determine the transitive dependencies to include from it.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.openjpa&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Non-OpenJPA JARs to pull in --&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;net.sourceforge.serp&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;serp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-collections&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-collections&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-pool&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-pool&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jms_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jta_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to manually add back optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jpa_1.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- end optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/project&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-jdbc/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-jdbc/pom.xml (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-jdbc/pom.xml Wed Nov &amp;nbsp;4 19:33:57 2009
&lt;br&gt;@@ -42,10 +42,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;hsqldb&amp;lt;/groupId&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa/pom.xml?rev=832854&amp;r1=832853&amp;r2=832854&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa/pom.xml (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa/pom.xml Wed Nov &amp;nbsp;4 19:33:57 2009
&lt;br&gt;@@ -62,6 +62,23 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createDependencyReducedPom&amp;gt;true&amp;lt;/createDependencyReducedPom&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;createSourcesJar&amp;gt;true&amp;lt;/createSourcesJar&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;keepDependenciesWithProvidedScope&amp;gt;true&amp;lt;/keepDependenciesWithProvidedScope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;promoteTransitiveDependencies&amp;gt;true&amp;lt;/promoteTransitiveDependencies&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Specify a subset of depends to include,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; which must match the &amp;lt;dependencies&amp;gt; section.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactSet&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;includes&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-lib&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-kernel&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-jdbc&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-persistence&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-persistence-jdbc&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-xmlstore&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;include&amp;gt;org.apache.openjpa:openjpa-slice&amp;lt;/include&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/includes&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/artifactSet&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- OpenJPA unique META-INF setup --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformers&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to concatinate the services resources:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; org.apache.openjpa.lib.conf.ProductDerivation
&lt;br&gt;@@ -108,13 +125,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-jdbc&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Need to exclude jaxb depends, so the following will not
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get included in the aggregate JAR by the shade plugin:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Need to exclude jaxb, so the following will not get included
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; as compile depends in the aggregate JAR by the shade plugin:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.xml.bind:jaxb-api:jar:2.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.xml.bind:jsr173_api:jar:1.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; javax.activation:activation:jar:1.1
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; com.sun.xml.bind:jaxb-impl:jar:2.0.5
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;@@ -125,7 +141,42 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- Need to manually add back optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jsr173_api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.activation&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;activation&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusion&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/exclusions&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- end optional openjpa-jdbc depends --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.openjpa&amp;lt;/groupId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-persistence&amp;lt;/artifactId&amp;gt;
&lt;br&gt;@@ -146,47 +197,5 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;openjpa-slice&amp;lt;/artifactId&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;${pom.version}&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- JARs NOT included in aggregate JAR via maven-shade-plugin --&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;net.sourceforge.serp&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;serp&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-collections&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-collections&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;commons-pool&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;commons-pool&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jms_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jta_1.1_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.geronimo.specs&amp;lt;/groupId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;geronimo-jpa_1.0_spec&amp;lt;/artifactId&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/project&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832854-in-openjpa-branches-1-3-x-openjpa-all-pom-xml-openjpa-jdbc-pom-xml-openjpa-pom-xml-tp3947578p3947578.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3946892</id>
	<title>svn commit: r832816 - /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java</title>
	<published>2009-11-04T09:48:29Z</published>
	<updated>2009-11-04T09:48:29Z</updated>
	<author>
		<name>jrbauer</name>
	</author>
	<content type="html">Author: jrbauer
&lt;br&gt;Date: Wed Nov &amp;nbsp;4 17:48:29 2009
&lt;br&gt;New Revision: 832816
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832816&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832816&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Fixed test case failure which occurs on DB platforms that use non-default max embedded LOB size.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java?rev=832816&amp;r1=832815&amp;r2=832816&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java?rev=832816&amp;r1=832815&amp;r2=832816&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/relations/TestMapCollectionToBlob.java Wed Nov &amp;nbsp;4 17:48:29 2009
&lt;br&gt;@@ -20,9 +20,12 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import java.sql.Types;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.meta.ClassMapping;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.meta.FieldMapping;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy;
&lt;br&gt;+import org.apache.openjpa.jdbc.meta.strats.MaxEmbeddedBlobFieldStrategy;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.JPAFacadeHelper;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.test.SingleEMTestCase;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -37,8 +40,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testHandlerToHandlerMaps() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClassMapping cm = (ClassMapping) JPAFacadeHelper.getMetaData(em,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;HandlerToHandlerMapInstance.class);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldMapping fm = cm.getFieldMapping(&amp;quot;map&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(HandlerFieldStrategy.class, fm.getStrategy().getClass());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldMapping fm = cm.getFieldMapping(&amp;quot;map&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(getBlobFieldStrategy(), fm.getStrategy().getClass());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;NONSTD_MAPPING_MAP&amp;quot;, fm.getTable().getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(fm.getTable().getColumn(&amp;quot;MAP&amp;quot;).getType(), Types.BLOB);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -49,4 +52,16 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Returns the strategy that is used for handling blob fields, based upon
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * the configuration of the dictionary.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Class&amp;lt;?&amp;gt; getBlobFieldStrategy() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DBDictionary dict = ((JDBCConfiguration)(emf.getConfiguration())).getDBDictionaryInstance();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dict.maxEmbeddedBlobSize == -1) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return HandlerFieldStrategy.class;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return MaxEmbeddedBlobFieldStrategy.class;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832816-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persistena-tp3946892p3946892.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3941867</id>
	<title>svn commit: r832587 - in /openjpa/trunk/openjpa-jdbc/src/main: java/org/apache/openjpa/jdbc/schema/ java/org/apache/openjpa/jdbc/sql/ resources/org/apache/openjpa/jdbc/schema/</title>
	<published>2009-11-03T14:49:30Z</published>
	<updated>2009-11-03T14:49:30Z</updated>
	<author>
		<name>jrbauer</name>
	</author>
	<content type="html">Author: jrbauer
&lt;br&gt;Date: Tue Nov &amp;nbsp;3 22:48:43 2009
&lt;br&gt;New Revision: 832587
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832587&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832587&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1083 Fixed a mapping tool failure caused by the inability to discover and drop multi-column foreign key constraints. &amp;nbsp;Multi-column FK's were not getting dropped, but got added after clearing out the tables. Trying to add an existing FK caused an exception when using Oracle.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java Tue Nov &amp;nbsp;3 22:48:43 2009
&lt;br&gt;@@ -26,6 +26,7 @@
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.commons.lang.ObjectUtils;
&lt;br&gt;+import org.apache.commons.lang.StringUtils;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.log.Log;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;@@ -753,7 +754,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Schema schema = getTable().getSchema();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey[] fks = dbdict.getImportedKeys(conn.getMetaData(), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conn.getCatalog(), schema.getName(), 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getTable().getName(), conn);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getTable().getName(), conn, false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for ( int i=0; i&amp;lt; fks.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Table localtable = schema.getTable(fks[i].getTableName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Table pkTable = schema.getTable(
&lt;br&gt;@@ -768,10 +769,33 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkTemp.setDeferred(fks[i].isDeferred());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkTemp.setDeleteAction(fks[i].getDeleteAction());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( ! fkTemp.containsColumn(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localtable.getColumn(fks[i].getColumnName(), dbdict)))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkTemp.join(localtable.getColumn(fks[i].getColumnName(), dbdict), 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkTable.getColumn(fks[i].getPrimaryKeyColumnName(), dbdict));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fks[i].getColumns() == null || fks[i].getColumns().length == 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Singular column foreign key 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( ! fkTemp.containsColumn(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localtable.getColumn(fks[i].getColumnName(), dbdict)))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkTemp.join(localtable.getColumn(fks[i].getColumnName(), dbdict), 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkTable.getColumn(fks[i].getPrimaryKeyColumnName(), dbdict));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Add the multi-column foreign key, joining local and pk columns in
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the temporary key
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] locCols = fks[i].getColumns();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] pkCols = fks[i].getPrimaryKeyColumns();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Column counts must match
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (locCols != null &amp;&amp; pkCols != null &amp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;locCols.length != pkCols.length) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log log = dbdict.getLog();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (log.isTraceEnabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.trace(_loc.get(&amp;quot;fk-column-mismatch&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 0; j &amp;lt; locCols.length; j++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( ! fkTemp.containsColumn(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localtable.getColumn(locCols[j].getName(), dbdict))) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkTemp.join(localtable.getColumn(locCols[j].getName(), dbdict), 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkTable.getColumn(pkCols[j].getName(), dbdict));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( equalsForeignKey(fkTemp))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(addFK)
&lt;br&gt;@@ -790,5 +814,96 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return retVal;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Joins the column of a single column FK to this FK.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param fk
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void addColumn(ForeignKey fk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Convert simple name based fk to a multi-column FK if necessary.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getColumns() == null || getColumns().length == 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If this FK is single column key, covert to a multi-column key
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] keyCols = createKeyColumns(this);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (keyCols[0] != null &amp;&amp; keyCols[1] != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setPrimaryKeyColumnName(null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setColumnName(null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;join(keyCols[0], keyCols[1]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the local and primary key columns from the fk and add them
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// to this fk.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] keyCols = createKeyColumns(fk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (keyCols[0] != null &amp;&amp; keyCols[1] != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;join(keyCols[0], keyCols[1]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Creates the local and primary key columns for a name-based fk. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return Column[] element 0 is local column
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;element 1 is the primary key in another table.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static Column[] createKeyColumns(ForeignKey fk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column fkCol = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!StringUtils.isEmpty(fk.getColumnName())) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkCol = new Column();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkCol.setName(fk.getColumnName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkCol.setTableName(fk.getTableName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkCol.setSchemaName(fk.getSchemaName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column pkCol = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!StringUtils.isEmpty(fk.getPrimaryKeyColumnName())) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkCol = new Column();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkCol.setName(fk.getPrimaryKeyColumnName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkCol.setTableName(fk.getPrimaryKeyTableName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pkCol.setSchemaName(fk.getPrimaryKeySchemaName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new Column[] { fkCol, pkCol };
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * ForeignKey utility class which determines equality based upon the 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * non-column state of the keys. &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static class FKMapKey {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private ForeignKey _fk;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public FKMapKey(ForeignKey fk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_fk = fk;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public ForeignKey getFk() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _fk;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public int hashCode() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getFk().getName() != null ? getFk().getName().hashCode() : getFk().hashCode();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean equals(Object fkObj) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fkObj == this) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fkObj == null || !(fkObj instanceof FKMapKey)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey fk = ((FKMapKey)fkObj).getFk();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getFk().getDeleteAction() != fk.getDeleteAction())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getFk().isDeferred() != fk.isDeferred())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!getFk().getName().equals(fk.getName())) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Assert PK table name and schema
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!StringUtils.equals(getFk().getPrimaryKeySchemaName(), fk.getPrimaryKeySchemaName()) ||
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;!StringUtils.equals(getFk().getPrimaryKeyTableName(), fk.getPrimaryKeyTableName()) ||
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;!StringUtils.equals(getFk().getSchemaName(), fk.getSchemaName()) ||
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;!StringUtils.equals(getFk().getTableName(), fk.getTableName())) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Nov &amp;nbsp;3 22:48:43 2009
&lt;br&gt;@@ -86,6 +86,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Sequence;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Table;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Unique;
&lt;br&gt;+import org.apache.openjpa.jdbc.schema.ForeignKey.FKMapKey;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.Filters;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.OpenJPAStateManager;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.Seq;
&lt;br&gt;@@ -4118,6 +4119,16 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ForeignKey[] getImportedKeys(DatabaseMetaData meta, String catalog,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String schemaName, String tableName, Connection conn)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SQLException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getImportedKeys(meta, catalog, schemaName, tableName, conn, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Reflect on the schema to return full foreign keys imported by the given
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * table pattern.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public ForeignKey[] getImportedKeys(DatabaseMetaData meta, String catalog,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String schemaName, String tableName, Connection conn, boolean partialKeys)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SQLException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!supportsForeignKeys)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tableName == null &amp;&amp; !supportsNullTableForGetImportedKeys)
&lt;br&gt;@@ -4130,19 +4141,50 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getSchemaNameForMetadata(schemaName),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getTableNameForMetadata(tableName));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List importedKeyList = new ArrayList();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (keys != null &amp;&amp; keys.next())
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;importedKeyList.add(newForeignKey(keys));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;ForeignKey&amp;gt; importedKeyList = new ArrayList&amp;lt;ForeignKey&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;FKMapKey, ForeignKey&amp;gt; fkMap = new HashMap&amp;lt;FKMapKey, ForeignKey&amp;gt;();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (keys != null &amp;&amp; keys.next()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey nfk = newForeignKey(keys);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!partialKeys) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey fk = combineForeignKey(fkMap, nfk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If the key returned != new key, fk col was combined
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// with existing fk.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fk != nfk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;importedKeyList.add(nfk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (ForeignKey[]) importedKeyList.toArray
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(new ForeignKey[importedKeyList.size()]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (keys != null)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (keys != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;keys.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Combines partial foreign keys into singular key
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected ForeignKey combineForeignKey(Map&amp;lt;FKMapKey, ForeignKey&amp;gt; fkMap,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey fk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FKMapKey fkmk = new FKMapKey(fk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey baseKey = fkMap.get(fkmk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Found the FK, add the additional column
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (baseKey != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;baseKey.addColumn(fk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return baseKey;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// fkey is new
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkMap.put(fkmk, fk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return fk;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Create a new foreign key from the information in the schema metadata.
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java Tue Nov &amp;nbsp;3 22:48:43 2009
&lt;br&gt;@@ -34,6 +34,7 @@
&lt;br&gt;&amp;nbsp;import java.util.ArrayList;
&lt;br&gt;&amp;nbsp;import java.util.Arrays;
&lt;br&gt;&amp;nbsp;import java.util.Calendar;
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.Iterator;
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;@@ -49,6 +50,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.PrimaryKey;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Sequence;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Table;
&lt;br&gt;+import org.apache.openjpa.jdbc.schema.ForeignKey.FKMapKey;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.jdbc.DelegatingDatabaseMetaData;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.J2DoPrivHelper;
&lt;br&gt;@@ -756,7 +758,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ForeignKey[] getImportedKeys(DatabaseMetaData meta, String catalog,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String schemaName, String tableName, Connection conn)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String schemaName, String tableName, Connection conn, boolean partialKeys)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SQLException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer delAction = new StringBuffer(&amp;quot;DECODE(t1.DELETE_RULE&amp;quot;).
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;append(&amp;quot;, 'NO ACTION', &amp;quot;).append(meta.importedKeyNoAction).
&lt;br&gt;@@ -805,9 +807,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setString(stmnt, idx++, tableName.toUpperCase(), null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setTimeouts(stmnt, conf, false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rs = stmnt.executeQuery();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List fkList = new ArrayList();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (rs != null &amp;&amp; rs.next())
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkList.add(newForeignKey(rs));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;ForeignKey&amp;gt; fkList = new ArrayList&amp;lt;ForeignKey&amp;gt;(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;FKMapKey, ForeignKey&amp;gt; fkMap = new HashMap&amp;lt;FKMapKey, ForeignKey&amp;gt;();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (rs != null &amp;&amp; rs.next()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey nfk = newForeignKey(rs);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!partialKeys) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ForeignKey fk = combineForeignKey(fkMap, nfk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Only add the fk to the import list if it is new
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fk != nfk) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fkList.add(nfk);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (ForeignKey[]) fkList.toArray
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(new ForeignKey[fkList.size()]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties?rev=832587&amp;r1=832586&amp;r2=832587&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties Tue Nov &amp;nbsp;3 22:48:43 2009
&lt;br&gt;@@ -154,3 +154,5 @@
&lt;br&gt;&amp;nbsp;no-column: Can not find column &amp;quot;{0}&amp;quot; in table &amp;quot;{1}&amp;quot;
&lt;br&gt;&amp;nbsp;except-read-fk-name: An exception occurred when obtaining the foreign key \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;names from the database. &amp;nbsp;
&lt;br&gt;+fk-column-mismatch: Unable to create multi-column foreign key. The key \
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;columns do not match primary keys in foreign table.
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832587-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-schema-java-o-tp3941867p3941867.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3941199</id>
	<title>svn commit: r832552 - in /openjpa/sandboxes/perf: openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/ap...</title>
	<published>2009-11-03T12:56:12Z</published>
	<updated>2009-11-03T12:56:12Z</updated>
	<author>
		<name>curtisr7</name>
	</author>
	<content type="html">Author: curtisr7
&lt;br&gt;Date: Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;New Revision: 832552
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832552&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832552&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;MDR preload refactoring. Added openjpa.Performance property. New testcase.
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java &amp;nbsp; (with props)
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -135,6 +135,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public QueryCompilationCacheValue queryCompilationCachePlugin;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public IntValue runtimeUnenhancedClasses;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public CacheMarshallersValue cacheMarshallerPlugins;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public StringValue performance;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// custom values
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public BrokerFactoryValue brokerFactoryPlugin;
&lt;br&gt;@@ -504,6 +505,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;runtimeUnenhancedClasses.setDefault(&amp;quot;supported&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;runtimeUnenhancedClasses.setString(&amp;quot;supported&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;runtimeUnenhancedClasses.setAliasListComprehensive(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Not used for anything. Handled in PersistenceProductDerivation.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;performance = addString(&amp;quot;Performance&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cacheMarshallerPlugins = (CacheMarshallersValue)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addValue(new CacheMarshallersValue(this));
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCRegistry.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -28,7 +28,6 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.ReferenceMap;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashMap;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.util.UserException;
&lt;br&gt;-import org.apache.openjpa.util.InvalidStateException;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * Tracks registered persistence-capable classes.
&lt;br&gt;@@ -55,10 +54,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static void addRegisterClassListener(RegisterClassListener rcl) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (rcl == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// we have to be positive that every listener gets notified for
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// every class, so lots of locking
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;synchronized (_listeners) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_listeners.contains(rcl) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_listeners.add(rcl);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;synchronized (_metas) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -259,7 +259,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Load the configured persistent classes list. Performed automatically
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * whenever a broker is created.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private void loadPersistentTypes(ClassLoader envLoader) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void loadPersistentTypes(ClassLoader envLoader) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if we've loaded the persistent types and the class name list
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// is empty, then we can simply return. Note that there is a
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// potential threading scenario in which _persistentTypesLoaded is
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -28,6 +28,7 @@
&lt;br&gt;&amp;nbsp;import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.HashSet;
&lt;br&gt;&amp;nbsp;import java.util.Iterator;
&lt;br&gt;+import java.util.LinkedHashSet;
&lt;br&gt;&amp;nbsp;import java.util.LinkedList;
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;@@ -115,15 +116,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private final Map _seqs = new HashMap();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// these are set in endConfiguration()
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _oids;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _impls;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _ifaces;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _aliases;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _pawares;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _nonMapped;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _oids = Collections.synchronizedMap(new HashMap());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _impls = Collections.synchronizedMap(new HashMap());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _ifaces = Collections.synchronizedMap(new HashMap());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _aliases = Collections.synchronizedMap(new HashMap());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _pawares = Collections.synchronizedMap(new HashMap());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _nonMapped = Collections.synchronizedMap(new HashMap());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// map of classes to lists of their subclasses
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Map _subs;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map _subs = Collections.synchronizedMap(new HashMap());
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// xml mapping
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final XMLMetaData[] EMPTY_XMLMETAS;
&lt;br&gt;@@ -140,8 +141,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// we buffer up any classes that register themselves to prevent
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// reentrancy errors if classes register during a current parse (common)
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private final Collection _registered = new HashSet();
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final Collection&amp;lt;Class&amp;lt;?&amp;gt;&amp;gt; _registered = new HashSet&amp;lt;Class&amp;lt;?&amp;gt;&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private boolean _registeredEmpty = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// set of metadatas we're in the process of resolving
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private final InheritanceOrderedMetaDataList _resolving =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new InheritanceOrderedMetaDataList();
&lt;br&gt;@@ -153,13 +155,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private LifecycleEventManager.ListenerList _listeners =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new LifecycleEventManager.ListenerList(3);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private ReentrantLock _lock = null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;// If true, all configured persistent classes will be eagerly loaded.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected boolean _eagerPersistentTypes = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private ReentrantLock _lock = new ReentrantLock();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean _eagerPersistentMetaData = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean _noLock = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final String EAGER_PERSISTENT_TYPES = &amp;quot;EagerPersistentTypes&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final String EAGER_PERSISTENT_META_DATA = &amp;quot;EagerPersistentMetaData&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -287,23 +286,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_sourceMode &amp;= ~mode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all known persistent classes at initialization.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Defaults to false.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void setEagerPersistentTypes(boolean b) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_eagerPersistentTypes = b;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all known persistent classes at initialization.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Defaults to false.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public boolean getEagerPersistentTypes() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _eagerPersistentTypes;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all MetaData for all known persistent classes at initialization.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Defaults to false.
&lt;br&gt;@@ -327,40 +310,25 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _noLock;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * If the openjpa.MetaDataRepository plugin value EagerPersistentMetaData=false and
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * EagerPersistentTypes=false , this method will noop. If EagerPersistentTypes=true this method
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * gets the list of persistent classes and loads them (Class.forName(..)). If EagerPersistentMetaData=true, this
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * If the openjpa.MetaDataRepository plugin value EagerPersistentMetaData=false , this method will noop. If EagerPersistentMetaData=true, this
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * method will load all persistent classes and ALL MetaData for those persistent classes.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;lt;p&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * EagerPersistentMetaData=true implies EagerPersistentTypes=true.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * If noLock=true, calling this method will remove ALL locking from this class if EagerPersistentMetaData=true.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;lt;p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * If noLock=true, calling this method will also remove ALL locking from this class.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * &amp;lt;p&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * NOTE : This method is not thread safe and should ONLY be called by the AbstractBrokerFactory
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * constructor.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * NOTE : This method is not thread safe and should ONLY be called by the PersistenceProviderImpl.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void initializeEager() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == false &amp;&amp; _eagerPersistentTypes == false) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == false) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_log.isTraceEnabled()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_log.trace(&amp;quot;MetaDataRepository NoLock=&amp;quot; + _noLock + &amp;quot;, EagerPersistentTypes=&amp;quot; + _eagerPersistentTypes
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;, EagerPersistentMetaData=&amp;quot; + _eagerPersistentMetaData);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If pooling EMFs, this method may be invoked more than once. Only perform this work once.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerProcessingComplete == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove locking and use unsynchronized maps if we're loading all MetaData
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_noLock == true &amp;&amp; _eagerPersistentMetaData == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_oids = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_impls = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_ifaces = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_aliases = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_pawares = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_nonMapped = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subs = new HashMap();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_lock = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_log.isTraceEnabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_log.trace(&amp;quot;MetaDataRepository NoLock=&amp;quot; + _noLock + &amp;quot;, EagerPersistentMetaData=&amp;quot; + _eagerPersistentMetaData);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MultiClassLoader multi = AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction());
&lt;br&gt;@@ -377,25 +345,26 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.trace(MetaDataRepository.class.getName() + &amp;quot; found the following classes : &amp;quot; + classes.toString());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Class&amp;gt; loaded = new ArrayList&amp;lt;Class&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (String c : classes) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class&amp;lt;?&amp;gt; cls = AccessController.doPrivileged((J2DoPrivHelper.getForNameAction(c, true, multi)));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO -- need to test this
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// resolveAll(multi);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// // Load query metadata
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// _factory.load(cls, MODE_QUERY, multi);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_factory.load(cls, MODE_ALL, multi);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loaded.add(cls);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// This call may be unnecessary?
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_factory.load(cls, MODE_ALL, multi);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (PrivilegedActionException pae) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new MetaDataException(_loc.get(&amp;quot;repos-initializeEager-error&amp;quot;), pae);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}// end for
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Hook this class in early so we can process registered classes and add them
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// to _aliases list.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resolveAll(multi);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Hook in this class as a listener and process registered classes list to populate _aliases list.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PCRegistry.addRegisterClassListener(this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;processRegisteredClasses(multi);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_noLock == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_lock = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_eagerProcessingComplete = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected void lock() {
&lt;br&gt;@@ -472,7 +441,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// check cache
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;processRegisteredClasses(envLoader);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List classList = (List) _aliases.get(alias);
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// multiple classes may have been defined with the same alias: we
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// will filter by checking against the current list of the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// persistent types and filter based on which classes are loadable
&lt;br&gt;@@ -1151,6 +1120,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @param mustExist if true, throws a {@link MetaDataException}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * if no metadata is found
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;boolean _eagerProcessingComplete = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ClassMetaData getMetaData(Object oid, ClassLoader envLoader,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean mustExist) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (oid == null &amp;&amp; mustExist)
&lt;br&gt;@@ -1563,7 +1533,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Updates our datastructures with the latest registered classes.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;@@ -1685,8 +1655,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;classList = new ArrayList(3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_aliases.put(alias, classList);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!classList.contains(cls))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!classList.contains(cls)){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;classList.add(cls);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unlock();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -1773,19 +1744,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void endConfiguration() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_oids = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_impls = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_ifaces = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_aliases = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_pawares = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_nonMapped = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subs = Collections.synchronizedMap(new HashMap());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_lock = new ReentrantLock();
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;initializeMetaDataFactory();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_implGen == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_implGen = new InterfaceImplGenerator(this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == true &amp;&amp; _noLock == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_oids = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_impls = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_ifaces = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_aliases = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_pawares = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_nonMapped = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subs = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Wait till we're done loading MetaData to remove lock.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private void initializeMetaDataFactory() {
&lt;br&gt;@@ -2300,8 +2272,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * EagerPersistentMetaData set to true.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static boolean needsInitializeEager(Options o) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o.getBooleanProperty(EAGER_PERSISTENT_TYPES) == true
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| o.getBooleanProperty(EAGER_PERSISTENT_META_DATA) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o.getBooleanProperty(EAGER_PERSISTENT_META_DATA) == true) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&lt;br&gt;Added: openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java?rev=832552&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java?rev=832552&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java (added)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -0,0 +1,108 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License. &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.conf;
&lt;br&gt;+
&lt;br&gt;+import java.util.Arrays;
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;+import java.util.List;
&lt;br&gt;+import java.util.Map;
&lt;br&gt;+
&lt;br&gt;+import org.apache.openjpa.lib.conf.Configurations;
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
&lt;br&gt;+import org.apache.openjpa.persistence.kernel.common.apps.RuntimeTest1;
&lt;br&gt;+import org.apache.openjpa.persistence.test.PersistenceTestCase;
&lt;br&gt;+
&lt;br&gt;+public class TestPerformanceConfiguration extends PersistenceTestCase {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testPerformanceLevel1() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerFactorySPI emf = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Pass in an Entity because one of the properties requires one.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf = createEMF(RuntimeTest1.class, &amp;quot;openjpa.Performance&amp;quot;, &amp;quot;1&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = emf.getConfiguration();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Boolean&amp;gt; props =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringPropertiesToMap(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;EagerPersistentMetaData&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;NoLock&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props = stringPropertiesToMap(Configurations.getProperties(conf.getBrokerImpl()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;SuppressBatchOleLogging&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Test Dianne's stuff
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testPerformanceLevel1MDRCollision() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerFactorySPI emf = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Pass in an Entity because one of the properties requires one.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createEMF(RuntimeTest1.class, &amp;quot;openjpa.Performance&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;openjpa.MetaDataRepository&amp;quot;, &amp;quot;NoLock=false&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = emf.getConfiguration();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Make sure that we didn't wipe the user specified data.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Boolean&amp;gt; props =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringPropertiesToMap(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;EagerPersistentMetaData&amp;quot;) == null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertFalse(props.get(&amp;quot;NoLock&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props = stringPropertiesToMap(Configurations.getProperties(conf.getBrokerImpl()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;SuppressBatchOleLogging&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testPerformanceLevel1BrokerImplCollision() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerFactorySPI emf = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Pass in an Entity because one of the properties requires one.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createEMF(RuntimeTest1.class, &amp;quot;openjpa.Performance&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;openjpa.BrokerImpl&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;SuppressBatchOleLogging=false&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = emf.getConfiguration();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Make sure that we didn't wipe the user specified data.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Boolean&amp;gt; props =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringPropertiesToMap(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;EagerPersistentMetaData&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(props.get(&amp;quot;NoLock&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;props = stringPropertiesToMap(Configurations.getProperties(conf.getBrokerImpl()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertFalse(props.get(&amp;quot;SuppressBatchOleLogging&amp;quot;));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static Map&amp;lt;String, Boolean&amp;gt; stringPropertiesToMap(String str) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;String&amp;gt; properties = Arrays.asList(str.split(&amp;quot;[,]&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String, Boolean&amp;gt; res = new HashMap&amp;lt;String, Boolean&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (String p : properties) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] t = p.split(&amp;quot;[=]&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;res.put(t[0], Boolean.parseBoolean(t[1]));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return res;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestPerformanceConfiguration.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/kernel/TestBrokerImpl.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -31,15 +31,18 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp(CLEAR_TABLES, NamedEntity.class, &amp;quot;openjpa.FetchBatchSize&amp;quot;, 100, &amp;quot;openjpa.BrokerImpl&amp;quot;,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;SuppressBatchOleLogging=true&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;SuppressBatchOleLogging=true&amp;quot;,NamedEntity.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void test() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSuppressBatchOleLogging() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em1 = emf.createEntityManager();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em2 = emf.createEntityManager();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;NamedEntity&amp;gt; entities = new ArrayList&amp;lt;NamedEntity&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().begin();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 75; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 5; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NamedEntity e = new NamedEntity();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;entities.add(e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.persist(e);
&lt;br&gt;@@ -58,7 +61,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().commit();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().commit();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (RollbackException ole) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ole.printStackTrace();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String msg = ole.getCause().getMessage();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (msg.contains(&amp;quot;NamedEntity&amp;quot;)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Shouldn't have found any Entity information in the OLE message&amp;quot;);
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -30,6 +30,7 @@
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;import java.util.MissingResourceException;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;import javax.persistence.spi.PersistenceUnitInfo;
&lt;br&gt;&amp;nbsp;import javax.persistence.spi.PersistenceUnitTransactionType;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -453,6 +454,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_source = source;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static final int MAX_PERF_LEVEL = 1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void setInto(Configuration conf) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (conf instanceof OpenJPAConfiguration) {
&lt;br&gt;@@ -473,6 +476,49 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, Configurations.combinePlugins(orig, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(String) override));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Setup Performance configuration properties. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map props = getProperties();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object perfLevel = props.get(ProductDerivations.getConfigurationKey(&amp;quot;Performance&amp;quot;, getProperties()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (perfLevel instanceof String) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int level = 0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = Integer.parseInt((String) perfLevel);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(level &amp;gt; MAX_PERF_LEVEL){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = MAX_PERF_LEVEL;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log log = oconf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// We missed translation. What to do about this?
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(log.isInfoEnabled()){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// LOG ME
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NumberFormatException nfe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (Boolean.parseBoolean((String) perfLevel) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If true, set to maximum perfLevel.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = MAX_PERF_LEVEL;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = 0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}// end catch
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The reason that there is a switch here is that in the future when(if) there is another
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// performance level, the new level will include the older(lower) levels. ie: Level 2 would include
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// changes that were a part of Level 1.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (level) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 1:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO -- add a trace point if we found a user property conflicting with
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the performance prop?
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String key = ProductDerivations.getConfigurationKey(&amp;quot;MetaDataRepository&amp;quot;, getProperties());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (props.containsKey(key) == false) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, &amp;quot;NoLock=true,EagerPersistentMetaData=true&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key = ProductDerivations.getConfigurationKey(&amp;quot;BrokerImpl&amp;quot;, getProperties());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (props.containsKey(key) == false) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, &amp;quot;SuppressBatchOleLogging=true&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setInto(conf, null);
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=832552&amp;r1=832551&amp;r2=832552&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java Tue Nov &amp;nbsp;3 20:56:10 2009
&lt;br&gt;@@ -20,6 +20,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import java.lang.instrument.ClassFileTransformer;
&lt;br&gt;&amp;nbsp;import java.lang.instrument.IllegalClassFormatException;
&lt;br&gt;+import java.security.AccessController;
&lt;br&gt;&amp;nbsp;import java.security.ProtectionDomain;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -33,12 +34,14 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.OpenJPAConfiguration;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.enhance.PCClassFileTransformer;
&lt;br&gt;+import org.apache.openjpa.kernel.AbstractBrokerFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.Bootstrap;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.BrokerFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.conf.Configuration;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.conf.ConfigurationProvider;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.conf.Configurations;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.log.Log;
&lt;br&gt;+import org.apache.openjpa.lib.util.J2DoPrivHelper;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Options;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.meta.MetaDataModes;
&lt;br&gt;@@ -90,7 +93,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// any exceptions here because we want to fail-fast.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = factory.getConfiguration();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(MetaDataRepository.needsInitializeEager(o) == true){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (MetaDataRepository.needsInitializeEager(o) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository mdr = conf.getMetaDataRepositoryInstance(); 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setValidate(MetaDataRepository.VALIDATE_RUNTIME, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setResolve(MetaDataRepository.MODE_MAPPING_INIT, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((AbstractBrokerFactory) factory).loadPersistentTypes((ClassLoader) AccessController.doPrivileged(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.getContextClassLoaderAction()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conf.getMetaDataRepositoryInstance().initializeEager();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -175,7 +183,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// any exceptions here because we want to fail-fast.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = factory.getConfiguration();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(MetaDataRepository.needsInitializeEager(o) == true){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (MetaDataRepository.needsInitializeEager(o) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository mdr = conf.getMetaDataRepositoryInstance(); 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setValidate(MetaDataRepository.VALIDATE_RUNTIME, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setResolve(MetaDataRepository.MODE_MAPPING_INIT, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((AbstractBrokerFactory) factory).loadPersistentTypes((ClassLoader) AccessController
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conf.getMetaDataRepositoryInstance().initializeEager();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r832552-in-openjpa-sandboxes-perf-openjpa-kernel-src-main-java-org-apache-openjpa-conf-op-tp3941199p3941199.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-3940492</id>
	<title>svn commit: r832506 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/</title>
	<published>2009-11-03T10:50:49Z</published>
	<updated>2009-11-03T10:50:49Z</updated>
	<author>
		<name>allee8285-2</name>
	</author>
	<content type="html">Author: allee8285
&lt;br&gt;Date: Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;New Revision: 832506
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=832506&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=832506&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1306 - Correct secondary table locking problem and test cases to match. Also fixed multiple SQLs validation test case problem.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/MixedLockManager.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -19,9 +19,16 @@
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.jdbc.kernel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import java.sql.SQLException;
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;+import java.util.List;
&lt;br&gt;+import java.util.Map;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.meta.ClassMapping;
&lt;br&gt;+import org.apache.openjpa.jdbc.meta.FieldMapping;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.SQLBuffer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.SQLExceptions;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.SQLFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.Select;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.MixedLockLevels;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.OpenJPAStateManager;
&lt;br&gt;@@ -74,6 +81,32 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected List&amp;lt;SQLBuffer&amp;gt; getLockRows(DBDictionary dict, Object id, ClassMapping mapping,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JDBCFetchConfiguration fetch, SQLFactory factory) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;SQLBuffer&amp;gt; sqls = super.getLockRows(dict, id, mapping, fetch, factory);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!dict.supportsLockingWithMultipleTables) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// look for columns mapped to secondary tables which need to be locked
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,FieldMapping&amp;gt; colsMappedToSecTable = new HashMap&amp;lt;String,FieldMapping&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldMapping fms[] = mapping.getFieldMappings();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for( FieldMapping fm : fms) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String secTableName = fm.getMappingInfo().getTableName();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( secTableName != null ) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;colsMappedToSecTable.put(secTableName, fm);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for( String secTableName : colsMappedToSecTable.keySet()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldMapping fm = colsMappedToSecTable.get(secTableName);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// select only the PK columns, since we just want to lock
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select select = factory.newSelect();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.select(fm.getColumns());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.whereForeignKey(fm.getJoinForeignKey(), id, mapping, _store);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sqls.add(select.toSelect(true, fetch));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return sqls;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected void optimisticLockInternal(OpenJPAStateManager sm, int level,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int timeout, Object sdata, boolean postLockVersionCheck) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.optimisticLockInternal(sm, level, timeout, sdata,
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PessimisticLockManager.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -22,11 +22,14 @@
&lt;br&gt;&amp;nbsp;import java.sql.PreparedStatement;
&lt;br&gt;&amp;nbsp;import java.sql.ResultSet;
&lt;br&gt;&amp;nbsp;import java.sql.SQLException;
&lt;br&gt;+import java.util.ArrayList;
&lt;br&gt;+import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.meta.ClassMapping;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.SQLBuffer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.SQLExceptions;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.SQLFactory;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.Select;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.OpenJPAStateManager;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.StoreContext;
&lt;br&gt;@@ -48,7 +51,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(PessimisticLockManager.class);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private JDBCStore _store;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected JDBCStore _store;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public PessimisticLockManager() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setVersionCheckOnReadLock(false);
&lt;br&gt;@@ -119,24 +122,20 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object id = sm.getObjectId();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClassMapping mapping = (ClassMapping) sm.getMetaData();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (mapping.getJoinablePCSuperclassMapping() != null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mapping = mapping.getJoinablePCSuperclassMapping();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// select only the PK columns, since we just want to lock
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select select = _store.getSQLFactory().newSelect();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.select(mapping.getPrimaryKeyColumns());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.wherePrimaryKey(id, mapping, _store);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SQLBuffer sql = select.toSelect(true, fetch);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;SQLBuffer&amp;gt; sqls = getLockRows(dict, id, mapping, fetch, _store.getSQLFactory()); 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ensureStoreManagerTransaction();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Connection conn = _store.getConnection();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PreparedStatement stmnt = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ResultSet rs = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stmnt = prepareStatement(conn, sql);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict.setTimeouts(stmnt, fetch, true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rs = executeQuery(conn, stmnt, sql);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;checkLock(rs, sm, timeout);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (SQLBuffer sql : sqls) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stmnt = prepareStatement(conn, sql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict.setTimeouts(stmnt, fetch, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rs = executeQuery(conn, stmnt, sql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;checkLock(rs, sm, timeout);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (SQLException se) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw SQLExceptions.getStoreSQLException(sm, se, dict,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level);
&lt;br&gt;@@ -149,6 +148,19 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected List&amp;lt;SQLBuffer&amp;gt; getLockRows(DBDictionary dict, Object id, ClassMapping mapping,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JDBCFetchConfiguration fetch, SQLFactory factory) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (mapping.getJoinablePCSuperclassMapping() != null)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mapping = mapping.getJoinablePCSuperclassMapping();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// select only the PK columns, since we just want to lock
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select select = factory.newSelect();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.select(mapping.getPrimaryKeyColumns());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select.wherePrimaryKey(id, mapping, _store);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;SQLBuffer&amp;gt; sqls = new ArrayList&amp;lt;SQLBuffer&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sqls.add(select.toSelect(true, fetch));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return sqls;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Enforce that we have an actual transaction in progress so that we can
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * start locking. The transaction should already be begun when using a
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/LockScopeTestCase.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -66,8 +66,11 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;public abstract class LockScopeTestCase extends SQLListenerTestCase {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected final String Any &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;quot;.*&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final String Select &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;quot;SELECT.*FROM.*&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final String Where &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;quot;.*WHERE.*&amp;quot;;
&lt;br&gt;+// &amp;nbsp; &amp;nbsp;protected final String Join &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;quot;.*(JOIN){1}.*&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected final String NoJoin &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;quot;(JOIN){0}&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final String ForUpdateRex &amp;nbsp; &amp;nbsp; = &amp;quot;FOR UPDATE.*&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final String ForUpdateClause &amp;nbsp;= &amp;quot;(&amp;quot; + ForUpdateRex + &amp;quot;)&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final String ForUpdate &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= ForUpdateClause + &amp;quot;{1}&amp;quot;;
&lt;br&gt;@@ -149,7 +152,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.trace(&amp;quot;\r\n&amp;quot; + toString(sql));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertAnySQLAnyOrder(expected);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertAllSQLAnyOrder(expected);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected void logStack(Throwable t) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1x1LockScope.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -30,6 +30,14 @@
&lt;br&gt;&amp;nbsp;public class Test1x1LockScope extends LockScopeTestCase {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSupportedDatabases(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DerbyDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.OracleDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DB2Dictionary.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isTestsDisabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp(LSE1x1Lf.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSE1x1LfLzy.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSE1x1LfJT.class
&lt;br&gt;@@ -113,7 +121,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.id, t1.version, t1.lastName 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1Lf t0, LSE1x1Rt t1 WHERE t0.id = ? AND t0.UNIRIGHT_ID = t1.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -143,7 +151,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR UPDATE [params=(int) 1111202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 1121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? FOR UPDATE [params=(int) 1111202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock.
&lt;br&gt;@@ -158,8 +166,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1Lf t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1111202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1111202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -185,7 +193,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR UPDATE [params=(String) firstName%1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? [params=(int) 1121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? [params=(int) 1111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock.
&lt;br&gt;@@ -200,8 +208,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1Lf t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? [params=(int) 1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -221,7 +229,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.id, t1.version, t1.lastName 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1Lf t0, LSE1x1Rt t1 WHERE t0.id = ? AND t0.UNIRIGHT_ID = t1.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1111202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -251,7 +259,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR UPDATE [params=(String) firstName%1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? [params=(int) 1121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? [params=(int) 1111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock.
&lt;br&gt;@@ -266,8 +274,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1Lf t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Lf t0 WHERE t0.id = ? [params=(int) 1111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -287,7 +295,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.id, t1.version, t1.lastName 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1Lf t0, LSE1x1Rt t1 WHERE t0.id = ? AND t0.UNIRIGHT_ID = t1.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1111202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableRtName + Where + &amp;quot;\\(\\+\\).*&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -552,7 +560,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1LfJT t0, Uni1x1LfJT_Uni1x1RT t1, LSE1x1Rt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1X1LFJT_ID AND t1.UNIRIGHTJT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -583,7 +591,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR UPDATE [params=(int) 1112202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 1122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? FOR UPDATE [params=(int) 1112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, if jpa2/extended scope, LOCK Uni1x1LfJT_Uni1x1RT
&lt;br&gt;@@ -600,8 +608,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1LfJT t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1112202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1112202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -628,7 +636,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;AND t1.UNIRIGHTJT_ID = t2.id(+) FOR UPDATE [params=(String) firstName%1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? [params=(int) 1122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? [params=(int) 1112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, if jpa2/extended scope, LOCK Uni1x1LfJT_Uni1x1RT
&lt;br&gt;@@ -645,8 +653,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1LfJT t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? [params=(int) 1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -668,7 +676,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1LfJT t0, Uni1x1LfJT_Uni1x1RT t1, LSE1x1Rt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1X1LFJT_ID AND t1.UNIRIGHTJT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -700,7 +708,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;AND t1.UNIRIGHTJT_ID = t2.id(+) FOR UPDATE [params=(String) firstName%1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1Rt t0 WHERE t0.id = ? [params=(int) 1122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? [params=(int) 1112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, if jpa2/extended scope, LOCK Uni1x1LfJT_Uni1x1RT
&lt;br&gt;@@ -717,8 +725,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSE1x1LfJT t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1x1LfJT t0 WHERE t0.id = ? [params=(int) 1112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + &amp;quot;.*&amp;quot; + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -740,7 +748,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1x1LfJT t0, Uni1x1LfJT_Uni1x1RT t1, LSE1x1Rt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1X1LFJT_ID AND t1.UNIRIGHTJT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 1112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/Test1xmLockScope.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -30,6 +30,14 @@
&lt;br&gt;&amp;nbsp;public class Test1xmLockScope extends LockScopeTestCase {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSupportedDatabases(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DerbyDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.OracleDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DB2Dictionary.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isTestsDisabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp(LSE1xmLf.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSE1xmLfEgr.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSE1xmLfJT.class
&lt;br&gt;@@ -316,7 +324,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfEgr t0, LSE1xmLfEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2111201] 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -353,7 +361,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2121203]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2121204]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2111202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -378,9 +386,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? FOR UPDATE WITH RR
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2111202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -410,10 +418,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR READ ONLY WITH RS USE AND KEEP UPDATE LOCKS [params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + joinTables + Where + NoDB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle: &amp;nbsp; &amp;nbsp;// TODO: if jpa2, DO NOT lock LSE1xmRT using &amp;quot;FOR UPDATE OF col&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t0.version, t0.firstName FROM LSE1xmLfEgr t0 WHERE (t0.firstName LIKE ?) 
&lt;br&gt;@@ -425,8 +433,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? [params=(int) 2111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -448,9 +456,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? [params=(int) 2111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -472,7 +480,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfEgr t0, LSE1xmLfEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2111202] 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -507,10 +515,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR READ ONLY WITH RS USE AND KEEP UPDATE LOCKS [params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + joinTables + Where + NoDB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle: &amp;nbsp; &amp;nbsp;// TODO: if jpa2, DO NOT lock LSE1xmRT using &amp;quot;FOR UPDATE OF col&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t0.version, t0.firstName FROM LSE1xmLfEgr t0 WHERE (t0.firstName LIKE ?) 
&lt;br&gt;@@ -522,8 +530,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? [params=(int) 2111201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -545,9 +553,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2121201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfEgr t0 WHERE t0.id = ? [params=(int) 2111201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -569,7 +577,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfEgr t0, LSE1xmLfEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2111202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -854,7 +862,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfJTEgr t0, LSE1xmLfJTEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFJTEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -891,7 +899,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2122203]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2122204]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? FOR UPDATE [params=(int) 2112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -916,9 +924,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? FOR UPDATE WITH RR
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2112202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -948,10 +956,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR READ ONLY WITH RS USE AND KEEP UPDATE LOCKS [params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + joinTables + Where + NoDB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle: &amp;nbsp; &amp;nbsp;// TODO: if jpa2, DO NOT lock LSE1xmRT using &amp;quot;FOR UPDATE OF col&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t0.version, t0.firstName FROM LSE1xmLfJTEgr t0 WHERE (t0.firstName LIKE ?) 
&lt;br&gt;@@ -964,8 +972,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? [params=(int) 2112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -987,9 +995,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? [params=(int) 2112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -1011,7 +1019,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfJTEgr t0, LSE1xmLfJTEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFJTEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;@@ -1046,10 +1054,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FOR READ ONLY WITH RS USE AND KEEP UPDATE LOCKS [params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? &amp;nbsp;[params=(int) 2112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + Any + tableLfName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + joinTables + Where + NoDB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + DB2Lock);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + tableRtName + Any + NoJoin + Where + DB2Lock);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle: &amp;nbsp; &amp;nbsp;// TODO: if jpa2, DO NOT lock LSE1xmRT using &amp;quot;FOR UPDATE OF col&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t0.version, t0.firstName FROM LSE1xmLfJTEgr t0 WHERE (t0.firstName LIKE ?) 
&lt;br&gt;@@ -1062,8 +1070,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122202]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? [params=(int) 2112201]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + NoJoin + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock. If jpa2, DO NOT lock LSE1xmRt, 
&lt;br&gt;@@ -1085,9 +1093,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmRt t0 WHERE t0.id = ? [params=(int) 2122201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSE1xmLfJTEgr t0 WHERE t0.id = ? [params=(int) 2112201]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableRtName + Where + ForUpdate
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + tableLfName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + tableRtName + NoJoin + Where + ForUpdate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;@@ -1109,7 +1117,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM LSE1xmLfJTEgr t0, LSE1xmLfJTEgr_LSE1xmRt t1, LSE1xmRt t2 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSE1XMLFJTEGR_ID(+) AND t1.UNIRIGHT_ID = t2.id(+) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 2112202]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + &amp;quot;.*&amp;quot; + tableJTName + &amp;quot;.*&amp;quot; + tableRtName + Where
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + tableLfName + Any + tableJTName + Any + tableRtName + Where
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;\\(\\+\\).*&amp;quot; + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java?rev=832506&amp;r1=832505&amp;r2=832506&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lock/extended/TestBasicLockScope.java Tue Nov &amp;nbsp;3 18:50:48 2009
&lt;br&gt;@@ -32,6 +32,14 @@
&lt;br&gt;&amp;nbsp;public class TestBasicLockScope extends LockScopeTestCase {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSupportedDatabases(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DerbyDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.OracleDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DB2Dictionary.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isTestsDisabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp(LSEBase.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSESecTbl.class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, LSESngTblCon.class
&lt;br&gt;@@ -269,7 +277,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0, LSESecTblDtl t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSESECTBL_ID [params=(int) 100]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + NoForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0
&lt;br&gt;@@ -294,9 +302,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0, LSESecTblDtl t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSESECTBL_ID FOR UPDATE [params=(int) 101]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? FOR UPDATE [params=(int) 101]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, SecTblDtl NOT locked *********
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The database is unable to lock this query. &amp;nbsp;Each object matching the query will be 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;locked individually after it is loaded; however, it is technically possible that
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;another transaction could modify the data before the lock is obtained.
&lt;br&gt;@@ -304,9 +312,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;INNER JOIN LSESecTblDtl t1 ON t0.id = t1.LSESECTBL_ID WHERE t0.id = ?
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(int) 101]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTbl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 101]
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTblDtl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 101]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 101]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + table1Name + &amp;quot;.*&amp;quot; + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table1Name + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table2Name + Any + NoJoin + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + ForUpdate);
&lt;br&gt;@@ -328,9 +338,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE (t0.firstName LIKE ?) AND t0.id = t1.LSESECTBL_ID FOR UPDATE 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(String) firstName%100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? [params=(int) 100]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, SecTblDtl NOT locked *********
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The database is unable to lock this query. &amp;nbsp;Each object matching the query will be 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;locked individually after it is loaded; however, it is technically possible that
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;another transaction could modify the data before the lock is obtained.
&lt;br&gt;@@ -338,9 +348,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;INNER JOIN LSESecTblDtl t1 ON t0.id = t1.LSESECTBL_ID 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE (t0.firstName LIKE ? ESCAPE '\') [params=(String) firstName%100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTbl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 100]
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTblDtl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? [params=(int) 100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + table1Name + &amp;quot;.*&amp;quot; + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table1Name + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table2Name + Any + NoJoin + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + ForUpdate);
&lt;br&gt;@@ -358,7 +370,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0, LSESecTblDtl t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSESECTBL_ID [params=(int) 101]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + NoForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0
&lt;br&gt;@@ -384,9 +396,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE (t0.firstName LIKE ?) AND t0.id = t1.LSESECTBL_ID FOR UPDATE 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;[params=(String) firstName%100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? [params=(int) 100]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby: &amp;nbsp; &amp;nbsp; //TODO: **Non-atomic lock, SecTblDtl NOT locked *********
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The database is unable to lock this query. &amp;nbsp;Each object matching the query will be 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;locked individually after it is loaded; however, it is technically possible that
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;another transaction could modify the data before the lock is obtained.
&lt;br&gt;@@ -394,9 +406,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;INNER JOIN LSESecTblDtl t1 ON t0.id = t1.LSESECTBL_ID
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE (t0.firstName LIKE ? ESCAPE '\') [params=(String) firstName%100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTbl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 100]
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id FROM LSESecTblDtl t0 WHERE t0.id = ? FOR UPDATE WITH RR [params=(int) 100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSESecTbl t0 WHERE t0.id = ? [params=(int) 100]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + NoForUpdate,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + table1Name + &amp;quot;.*&amp;quot; + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table1Name + Any + NoJoin + Where + ForUpdate,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select + NoJoin + Any + table2Name + Any + NoJoin + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + joinTables + Where + ForUpdate);
&lt;br&gt;@@ -414,7 +428,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0, LSESecTblDtl t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.LSESECTBL_ID [params=(int) 101]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + NoForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version, t0.firstName, t1.lastName FROM LSESecTbl t0
&lt;br&gt;@@ -659,7 +673,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case oracle:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t1.version, t1.firstName, t0.lastName FROM LSEJoinCon t0, LSEJoinAbs t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.id [params=(int) 400]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + NoForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + NoForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case derby:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t1.version, t1.firstName, t0.lastName FROM LSEJoinCon t0
&lt;br&gt;@@ -683,7 +697,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.id, t1.version, t1.firstName, t0.lastName FROM LSEJoinCon t0, LSEJoinAbs t1 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE t0.id = ? AND t0.id = t1.id FOR UPDATE [params=(int) 401]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SELECT t0.version FROM LSEJoinAbs t0 WHERE t0.id = ? FOR UPDATE [params=(int) 401]
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + &amp;quot;.*&amp;quot; + table2Name + Where + ForUpdate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertLockTestSQLs(Select + table1Name + Any + table2Name + Where + ForUpdate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &am