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 22:04:50 GMT
(In general, I prefer it if we can just make the Right Choice in the
first place, and not make the user need to decide how to configure
things.)

-Patrick

On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> I thought about that, but figured that this is something that is really
> probably DB pretty DB-specific, so it seemed acceptable to make it a
> hard-coded-per-db constant, rather than a configuration-accessible setting.
>
>  The advantage of my approach is that it does not remove the current
> supportsDeferrableConstraints setting, so there is no backwards-compat
> issue. If we introduced two new settings, then we'd need to decide what to
> do if supportsDeferrableConstraints and one of the new settings were in
> conflict.
>
> Certainly we could add a configuration-accessible setting if the need
> arises, though.
>
>
> -Patrick
>
> On 8/28/07, ben short < jamin.short@gmail.com> wrote:
> > Patrick,
> >
> > Maybe the property should be re factored to allow it to be true/false
> > per constraint type, foreignKeyDeferable, uniqueDeferable etc?
> >
> > Ben
> >
> > On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> > > 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
> > >
> >
>
>
>
> --
>
> Patrick Linskey
> 202 669 5907


-- 
Patrick Linskey
202 669 5907

Mime
View raw message