You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Norbert Rieger <nr...@lplusr.de> on 2009/02/23 18:49:25 UTC

@Id, @TableGenerator - Id creation fails when using a connection pool (inside Geronimo 2.1.3)

Hi,

 

until now I specified my jdbc connection in persistence.xml:

 

      <persistence-unit name="MDPU">

            <description>MD</description>

            <properties>

                  <property name="openjpa.ConnectionURL"
value="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:DB" />

                  <property name="openjpa.ConnectionDriverName"
value="oracle.jdbc.OracleDriver" />

                  <property name="openjpa.ConnectionUserName" value="user"
/>

                  <property name="openjpa.ConnectionPassword"
value="password" />

                  <property name="openjpa.Log"

 
value="DefaultLevel=TRACE,SQL=TRACE,File=x:/jpa-ejb.log,Runtime=TRACE,Tool=T
RACE" />

                  <property name="openjpa.ConnectionFactoryProperties" 

                               value="PrettyPrint=true,
PrettyPrintLineLength=128"/>

            </properties>

      </persistence-unit>

 

When using a database connection pool (within geronimo 2.1.3), everything
(query, remove, update, commit/rollback) works fine, exception Id
generation. 

This is what a get when I try to persist an entity which is declared like:

 

 

persistence.xml:

 

      <persistence-unit name="DBPU" transaction-type="JTA">

            <description>MD</description>

            <jta-data-source>dbconpool</jta-data-source>         

 

            <properties>

                  <property name="openjpa.Log"

 
value="DefaultLevel=TRACE,SQL=TRACE,File=x:/jpa-ejb.log,Runtime=TRACE,Tool=T
RACE" />

                  <property name="openjpa.ConnectionFactoryProperties" 

                               value="PrettyPrint=true,
PrettyPrintLineLength=128"/>

            </properties>

   </persistence-unit>

 

 

My entity:

 

    @Id

    @TableGenerator (name="PK_GEN_VTI",

                     table="PK_GEN",

                     pkColumnName="PK_IDENT",

                     pkColumnValue="VTI.PKEY",

                     valueColumnName="PK_VALUE")

    @GeneratedValue (strategy=GenerationType.TABLE,

                     generator="PK_GEN_VTI")

    private Long pkey;

 

è

 

<openjpa-1.0.3-r420667:677674 fatal general error>
org.apache.openjpa.persistence.PersistenceException: null

      at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq
.java:162)

      at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.ja
va:366)

      at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:2
66)

      at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)

      at
org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)

      at
org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)

      at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager
.java:557)

      at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:466)

      at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:442)

      at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreMana
ger.java:541)

 

The insert statement will be executed with an null Value in pkey, which
leads to an database error, null not allowed.

 

 

Can anybody help, what’s wrong with the TableGenerator or the database pool
?

 

Thanx a lot in advance.

 

NR


Re: @Id, @TableGenerator - Id creation fails when using a connection pool (inside Geronimo 2.1.3)

Posted by Pinaki Poddar <pp...@apache.org>.
Hi,
  "When using a managed DataSource, you should also configure a second
unmanaged DataSource that OpenJPA can use to perform tasks that are
independent of the global transaction. The most common of these tasks is
updating the sequence table OpenJPA uses to generate unique primary key
values for your datastore identity objects." [1]


[1]
http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_dbsetup_thirdparty


nrieger wrote:
> 
> Hi,
> 
>  
> 
> until now I specified my jdbc connection in persistence.xml:
> 
>  
> 
>       <persistence-unit name="MDPU">
> 
>             <description>MD</description>
> 
>             <properties>
> 
>                   <property name="openjpa.ConnectionURL"
> value="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:DB" />
> 
>                   <property name="openjpa.ConnectionDriverName"
> value="oracle.jdbc.OracleDriver" />
> 
>                   <property name="openjpa.ConnectionUserName" value="user"
> />
> 
>                   <property name="openjpa.ConnectionPassword"
> value="password" />
> 
>                   <property name="openjpa.Log"
> 
>  
> value="DefaultLevel=TRACE,SQL=TRACE,File=x:/jpa-ejb.log,Runtime=TRACE,Tool=T
> RACE" />
> 
>                   <property name="openjpa.ConnectionFactoryProperties" 
> 
>                                value="PrettyPrint=true,
> PrettyPrintLineLength=128"/>
> 
>             </properties>
> 
>       </persistence-unit>
> 
>  
> 
> When using a database connection pool (within geronimo 2.1.3), everything
> (query, remove, update, commit/rollback) works fine, exception Id
> generation. 
> 
> This is what a get when I try to persist an entity which is declared like:
> 
>  
> 
>  
> 
> persistence.xml:
> 
>  
> 
>       <persistence-unit name="DBPU" transaction-type="JTA">
> 
>             <description>MD</description>
> 
>             <jta-data-source>dbconpool</jta-data-source>         
> 
>  
> 
>             <properties>
> 
>                   <property name="openjpa.Log"
> 
>  
> value="DefaultLevel=TRACE,SQL=TRACE,File=x:/jpa-ejb.log,Runtime=TRACE,Tool=T
> RACE" />
> 
>                   <property name="openjpa.ConnectionFactoryProperties" 
> 
>                                value="PrettyPrint=true,
> PrettyPrintLineLength=128"/>
> 
>             </properties>
> 
>    </persistence-unit>
> 
>  
> 
>  
> 
> My entity:
> 
>  
> 
>     @Id
> 
>     @TableGenerator (name="PK_GEN_VTI",
> 
>                      table="PK_GEN",
> 
>                      pkColumnName="PK_IDENT",
> 
>                      pkColumnValue="VTI.PKEY",
> 
>                      valueColumnName="PK_VALUE")
> 
>     @GeneratedValue (strategy=GenerationType.TABLE,
> 
>                      generator="PK_GEN_VTI")
> 
>     private Long pkey;
> 
>  
> 
> è
> 
>  
> 
> <openjpa-1.0.3-r420667:677674 fatal general error>
> org.apache.openjpa.persistence.PersistenceException: null
> 
>       at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq
> .java:162)
> 
>       at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.ja
> va:366)
> 
>       at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:2
> 66)
> 
>       at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
> 
>       at
> org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
> 
>       at
> org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
> 
>       at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager
> .java:557)
> 
>       at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:466)
> 
>       at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:442)
> 
>       at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreMana
> ger.java:541)
> 
>  
> 
> The insert statement will be executed with an null Value in pkey, which
> leads to an database error, null not allowed.
> 
>  
> 
>  
> 
> Can anybody help, what’s wrong with the TableGenerator or the database
> pool
> ?
> 
>  
> 
> Thanx a lot in advance.
> 
>  
> 
> NR
> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/%40Id%2C-%40TableGenerator---Id-creation-fails-when-using-a-connection-pool-%28inside-Geronimo-2.1.3%29-tp2373340p2374156.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.