openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@gmail.com>
Subject Re: @UniqueConstraint annotation
Date Tue, 28 Aug 2007 21:42:49 GMT
That sounds like https://issues.apache.org/jira/browse/OPENJPA-282

It should be a trivial fix; we just need to update our Postgres
DBDictionary.

-Patrick

On 8/28/07, ben short <jamin.short@gmail.com> wrote:
>
> Hi,
>
> I have upgraded to 1.0.0-SNAPSHOT and see a different error..
>
> 31  openjpa  INFO   [main] openjpa.Runtime - Starting OpenJPA
> 1.0.0-SNAPSHOT
> 469  openjpa  TRACE  [main] openjpa.jdbc.SQL - <t 6206601, conn
> 27182317> executing prepstmnt 23103355 SELECT NULL AS SEQUENCE_SCHEMA,
> relname AS SEQUENCE_NAME FROM pg_class WHERE relkind='S'
> 469  openjpa  TRACE  [main] openjpa.jdbc.SQL - <t 6206601, conn
> 27182317> [0 ms] spent
> 484  openjpa  TRACE  [main] openjpa.jdbc.SQL - <t 6206601, conn
> 25086455> executing stmnt 3874616 CREATE TABLE AttributeAndValue (id
> BIGSERIAL NOT NULL, mAttribute VARCHAR(255), mValue VARCHAR(255),
> version INTEGER, mProductInstance BYTEA, PRIMARY KEY (id), UNIQUE
> (mAttribute, mValue) DEFERRABLE)
> 484  openjpa  TRACE  [main] openjpa.jdbc.SQL - <t 6206601, conn
> 25086455> [0 ms] spent
> Exception in thread "main" <openjpa-1.0.0-SNAPSHOT-r420667:564688
> nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: ERROR: syntax
> error at or near "DEFERRABLE" {stmnt 3874616 CREATE TABLE
> AttributeAndValue (id BIGSERIAL NOT NULL, mAttribute VARCHAR(255),
> mValue VARCHAR(255), version INTEGER, mProductInstance BYTEA, PRIMARY
> KEY (id), UNIQUE (mAttribute, mValue) DEFERRABLE)} [code=0,
> state=42601]
>         at org.apache.openjpa.jdbc.meta.MappingTool.record(
> MappingTool.java:549)
>         at org.apache.openjpa.jdbc.meta.MappingTool.record(
> MappingTool.java:449)
>         at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(
> JDBCBrokerFactory.java:170)
>         at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(
> JDBCBrokerFactory.java:130)
>         at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(
> AbstractBrokerFactory.java:186)
>         at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(
> DelegatingBrokerFactory.java:142)
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager
> (EntityManagerFactoryImpl.java:190)
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager
> (EntityManagerFactoryImpl.java:143)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke
> (AbstractEntityManagerFactoryBean.java:375)
>         at $Proxy0.createEntityManager(Unknown Source)
>         at com.daisytechnologies.jpatest.Main.insert(Main.java:45)
>         at com.daisytechnologies.jpatest.Main.main(Main.java:39)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at com.intellij.rt.execution.application.AppMain.main(AppMain.java
> :90)
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: ERROR:
> syntax error at or near "DEFERRABLE" {stmnt 3874616 CREATE TABLE
> AttributeAndValue (id BIGSERIAL NOT NULL, mAttribute VARCHAR(255),
> mValue VARCHAR(255), version INTEGER, mProductInstance BYTEA, PRIMARY
> KEY (id), UNIQUE (mAttribute, mValue) DEFERRABLE)} [code=0,
> state=42601]
>         at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(
> LoggingConnectionDecorator.java:192)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(
> LoggingConnectionDecorator.java:57)
>         at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate
> (LoggingConnectionDecorator.java:754)
>         at org.apache.openjpa.lib.jdbc.DelegatingStatement.executeUpdate(
> DelegatingStatement.java:114)
>         at org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(
> SchemaTool.java:1185)
>         at org.apache.openjpa.jdbc.schema.SchemaTool.createTable(
> SchemaTool.java:949)
>         at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java
> :526)
>         at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java
> :344)
>         at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java
> :321)
>         at org.apache.openjpa.jdbc.meta.MappingTool.record(
> MappingTool.java:497)
>         ... 20 more
>
> Im using Postgres version 8.1 with Postgres Jdbc driver version
> 8.1-408.jdbc3.
>
> Heres the sql,
>
> CREATE TABLE AttributeAndValue (id BIGSERIAL NOT NULL, mAttribute
> VARCHAR(255), mValue VARCHAR(255), version INTEGER, mProductInstance
> BYTEA, PRIMARY KEY (id), UNIQUE (mAttribute, mValue) DEFERRABLE)
>
> if I remove the DEFERRABLE then the ddl executes without errors.
>
> The Postgres 8.1 docs [1] say..
>
> DEFERRABLE
> NOT DEFERRABLE
>
> This controls whether the constraint can be deferred. A constraint
> that is not deferrable will be checked immediately after every
> command. Checking of constraints that are deferrable may be postponed
> until the end of the transaction (using the SET CONSTRAINTS command).
> NOT DEFERRABLE is the default. Only foreign key constraints currently
> accept this clause. All other constraint types are not deferrable.
>
> Regards
>
> Ben
>
> On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> > Hi,
> >
> > I think that this is actually a limitation of OpenJPA currently --
> > OpenJPA ignores unique constraints and some (most?) index definitions
> > when generating a schema.
> >
> > Could you attach the full stack trace to
> > https://issues.apache.org/jira/browse/OPENJPA-340 please? It'll be
> > useful for resolving the issue.
> >
> > -Patrick
> >
> > On 8/28/07, Ignacio Andreu <plunchete@gmail.com> wrote:
> > > Hi,
> > >
> > > Regarding the documentation about OpenJPA you can define a unique
> column
> > > with something like that:
> > >
> > > @Entity
> > > @Table(name="ART", uniqueConstraints=@Unique(columnNames="TITLE"))
> > > public class Article {
> > >     ...
> > > }
> > >
> > > And in XML
> > >
> > > <entity class="org.mag.Article">
> > >     <table name="ART">
> > >         <unique-constraint>
> > >             <column-name>TITLE</column-name>
> > >         </unique-constraint>
> > >     </table>
> > >     ...
> > > </entity>
> > >
> > > For more information see the "Unique Constraints" section [1]
> > >
> > > - Ignacio
> > >
> > >
> > > [1]
> > >
> http://openjpa.apache.org/docs/latest/manual/manual.html#jpa_overview_mapping_unq
> > >
> > > On 8/28/07, ben short <jamin.short@gmail.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > I am trying to use the @UniqueConstraint annotation but get the
> > > > following error message..
> > > >
> > > > OpenJPA does not yet support the @UniqueConstraint annotation.
> > > >
> > > > Is that any plan to implement this feature in the near future? Can I
> > > > define the mapping for the class that I'm trying to annotate in xml
> > > > rather than use the annotations to use the UniqueConstraint feature?
> > > >
> > > > Regards
> > > >
> > > > Ben Short
> > > >
> > >
> >
> >
> > --
> > Patrick Linskey
> > 202 669 5907
> >
>



-- 
Patrick Linskey
202 669 5907

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message