openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason <jdr0...@renci.org>
Subject Re: column already exists....column reserved word
Date Fri, 27 Apr 2012 16:23:09 GMT
Rick,

I have an application that sits on top of a Karaf container.  One of my 
maven projects is an osgi bundle which deploys a datasource as a 
service.  I, then, have the following in the persistence.xml file to get 
that datasource:

<jta-data-source>aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/mapseqJTA)</jta-data-source>
<non-jta-data-source>aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/mapseqNoJTA)</non-jta-data-source>


For my test cases, I have a different persistence.xml file, which has 
the following properties:

       <property name="openjpa.ConnectionDriverName" value="org.postgresql.Driver" />

       <property name="openjpa.ConnectionURL" value="jdbc:postgresql://localhost:5432/mapseq"
/>

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

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

       <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict,
JoinForeignKeyDeleteAction=restrict" />

       <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"
/>

       <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=TRACE,
SQL=TRACE" />

       <property name="openjpa.jdbc.DBDictionary" value="postgres" />

       <property name="openjpa.DataCache" value="false" />

       <property name="openjpa.QueryCache" value="false" />




On 04/27/2012 11:50 AM, Rick Curtis wrote:
> How are you configuring your database connection?
>
> On Fri, Apr 27, 2012 at 10:46 AM, Jason<jdr0887@renci.org>  wrote:
>
>> Rick,
>>
>> Here are my properties:
>>
>>       <property name="openjpa.jdbc.**MappingDefaults"
>> value="ForeignKeyDeleteAction=**restrict, JoinForeignKeyDeleteAction=**restrict"
>> />
>>
>>       <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO,
>> Tool=INFO, SQL=WARN" />
>>
>>       <property name="openjpa.jdbc.**DBDictionary" value="postgres" />
>>
>>       <property name="openjpa.DataCache" value="true" />
>>
>>       <property name="openjpa.QueryCache" value="true" />
>>
>>
>>
>>
>>
>>
>> On 04/27/2012 11:39 AM, Rick Curtis wrote:
>>
>>> Jason -
>>>
>>> What do you have set for properties in your persistence.xml file?
>>>
>>> Thanks,
>>> Rick
>>>
>>> On Fri, Apr 27, 2012 at 9:52 AM, Jason<jdr0887@renci.org>   wrote:
>>>
>>>   Rick,
>>>> When I set that property, I get the following build time error:
>>>>
>>>> [ERROR] Failed to execute goal org.codehaus.mojo:openjpa-****
>>>> maven-plugin:1.2:sql
>>>>
>>>> (enhancer) on project mapseq-dao-api: Execution enhancer of goal
>>>> org.codehaus.mojo:openjpa-****maven-plugin:1.2:sql failed:
>>>> org.apache.openjpa.jdbc.sql.****PostgresDictionary@4896b555.****
>>>> supportsDelimitedIdentifiers
>>>> = false: java.sql.DatabaseMetaData.<****init>(java.lang.String) ->
>>>> [Help 1]
>>>>
>>>> org.apache.maven.lifecycle.****LifecycleExecutionException: Failed to
>>>> execute goal org.codehaus.mojo:openjpa-****maven-plugin:1.2:sql
>>>> (enhancer)
>>>>
>>>> on project mapseq-dao-api: Execution enhancer of goal
>>>> org.codehaus.mojo:openjpa-****maven-plugin:1.2:sql failed:
>>>> org.apache.openjpa.jdbc.sql.****PostgresDictionary@4896b555.****
>>>> supportsDelimitedIdentifiers
>>>>
>>>> = false
>>>>
>>>>
>>>>
>>>> The root cause far down the stacktrace is:
>>>>
>>>> Caused by: java.lang.****NoSuchMethodException:
>>>> java.sql.DatabaseMetaData.<*
>>>> *init>(java.lang.String)
>>>>
>>>>     at java.lang.Class.****getConstructor0(Class.java:****2723)
>>>>
>>>>     at java.lang.Class.****getConstructor(Class.java:****1674)
>>>>
>>>>     at org.apache.openjpa.lib.util.****Options.stringToObject(**
>>>>
>>>> Options.java:437)
>>>>
>>>>
>>>> I did try to upgrade from OpenJPA v2.1.1 to v2.2.0, but got the same
>>>> error.  Any other suggestions?
>>>>
>>>> Thanks,
>>>> Jason
>>>>
>>>>
>>>> On 04/26/2012 03:38 PM, Rick Curtis wrote:
>>>>
>>>>   Jason --
>>>>> I'm able to recreate your failure when running against MySQL and a
>>>>> hacked
>>>>> up runtime. Can you try running with the following property[1] set ?
>>>>>
>>>>> Thanks,
>>>>> Rick
>>>>>
>>>>> [1]<property name="openjpa.jdbc.****DBDictionary"
>>>>> value="postgres(****supportsDelimitedIdentifiers=****false)"/>
>>>>>
>>>>>
>>>>> On Thu, Apr 26, 2012 at 10:03 AM, Jason<jdr0887@renci.org>    wrote:
>>>>>
>>>>>   Rick,
>>>>>
>>>>>> If I wrap the reserved word in quotes (\"...\"), then the column
is
>>>>>> created correctly.  Here is the generated create table sql:
>>>>>>
>>>>>> CREATE TABLE xxx (guid BIGINT NOT NULL, approved BOOL, "grant"
>>>>>> VARCHAR(64), PRIMARY KEY (guid));
>>>>>>
>>>>>> Yet, when I try to persist to that table, OpenJPA runs an "alter
table"
>>>>>> command.  Since the column already exists, an exception is thrown.
>>>>>>
>>>>>> org.apache.openjpa.******persistence.******PersistenceException:
>>>>>> ERROR:
>>>>>>
>>>>>> column
>>>>>>
>>>>>> "grant" of relation "xxx" already exists {stmnt 726853985 ALTER TABLE
>>>>>> study
>>>>>> ADD "grant" VARCHAR(64)} [code=0, state=42701]
>>>>>>     at org.apache.openjpa.jdbc.meta.******MappingTool.record(**
>>>>>> MappingTool.java:558)
>>>>>>     at org.apache.openjpa.jdbc.meta.******MappingTool.record(**
>>>>>> MappingTool.java:456)
>>>>>>     at org.apache.openjpa.jdbc.******kernel.JDBCBrokerFactory.**
>>>>>> synchronizeMappings(******JDBCBrokerFactory.java:160)
>>>>>>     at org.apache.openjpa.jdbc.******kernel.JDBCBrokerFactory.**
>>>>>> synchronizeMappings(******JDBCBrokerFactory.java:164)
>>>>>>     at org.apache.openjpa.jdbc.******kernel.JDBCBrokerFactory.****
>>>>>> newBrokerImpl(*
>>>>>> *JDBCBrokerFactory.java:122)
>>>>>>     at org.apache.openjpa.kernel.******AbstractBrokerFactory.****
>>>>>> newBroker(**
>>>>>> AbstractBrokerFactory.java:******210)
>>>>>>     at org.apache.openjpa.kernel.******DelegatingBrokerFactory.****
>>>>>> newBroker(**
>>>>>> DelegatingBrokerFactory.java:******156)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>> Jason
>>>>>>
>>>>>>
>>>>>> On 04/25/2012 02:28 PM, Rick Curtis wrote:
>>>>>>
>>>>>>   Hmm, that is a super old JIRA. I would expect that this should
work.
>>>>>>
>>>>>>> Your
>>>>>>> original post said that the exception happens when creating tables...
>>>>>>> what
>>>>>>> happens if you create the tables by hand and delimit this table
name
>>>>>>> via
>>>>>>> annotations (via \"...\")? Does the manual delimiter work at
runtime?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Rick
>>>>>>>
>>>>>>> On Wed, Apr 25, 2012 at 11:55 AM, Jason<jdr0887@renci.org>
    wrote:
>>>>>>>
>>>>>>>   Rick,
>>>>>>>
>>>>>>>   I am using OpenJPA v2.1.1.
>>>>>>>> I did find this open bug related to the issue:https://issues.apache.
>>>>>>>> **
>>>>>>>> org/*<https://issues.apache.****org/*<https://issues.apache.**org/*<https://issues.apache.org/*>
>>>>>>>> *jira/browse/OPENJPA-84<https:******//issues.apache.org/jira/****<http://issues.apache.org/jira/**>
>>>>>>>>
>>>>>>>> browse/OPENJPA-84<https://**is**sues.apache.org/jira/browse/****
>>>>>>>> OPENJPA-84<http://issues.apache.org/jira/browse/**OPENJPA-84><
>>>>>>>> https://issues.**apache.org/jira/browse/**OPENJPA-84<https://issues.apache.org/jira/browse/OPENJPA-84>
>>>>>>>>
>>>>>>>> After reading that bug, I figured that I will have to change
the name
>>>>>>>> of
>>>>>>>> the column to not be a reserved word until this bug is
>>>>>>>> implemented/fixed.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Jason
>>>>>>>>
>>>>>>>>
>>>>>>>> On 04/25/2012 10:01 AM, Rick Curtis wrote:
>>>>>>>>
>>>>>>>>   Jason -
>>>>>>>>
>>>>>>>>   What version of OpenJPA are you running? Can you post the
full
>>>>>>>>> stacktrace?
>>>>>>>>>
>>>>>>>>> On Tue, Apr 24, 2012 at 11:56 AM, Jason<jdr0887@renci.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>   Hi all,
>>>>>>>>>
>>>>>>>>>   I am using OpenJPA with PostgreSQL.  I have a table
where a column
>>>>>>>>>
>>>>>>>>>> has
>>>>>>>>>> the
>>>>>>>>>> name of "grant".  How can I get the schema creation
routine to wrap
>>>>>>>>>> the
>>>>>>>>>> column name "grant" in quotes?  Changing the column
name is doable,
>>>>>>>>>> but
>>>>>>>>>> not
>>>>>>>>>> preferable.
>>>>>>>>>>
>>>>>>>>>> I have tried the brain dead solution of just using:
@Column(name =
>>>>>>>>>> "\"grant\"")
>>>>>>>>>>
>>>>>>>>>> But that results in an error...PersistenceException:
column already
>>>>>>>>>> exists.
>>>>>>>>>>
>>>>>>>>>> Any suggestions?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Jason
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>


Mime
View raw message