openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ben short" <jamin.sh...@gmail.com>
Subject Re: @UniqueConstraint annotation
Date Tue, 28 Aug 2007 22:29:13 GMT
Sure, will the 1.1.0-SNAPSHOT be in the following repo?

http://people.apache.org/repo/m2-snapshot-repository/org/apache/openjpa/

On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> No worries.
>
> Could you annotate the JIRA issue as to whether or not the changes work in
> your environment?
>
> -Patrick
>
> On 8/28/07, ben short <jamin.short@gmail.com> wrote:
> >
> > I missed that while looking at the code.
> >
> > Thanks for the clarification.
> >
> > Ben
> >
> > On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> > > Ah. I think that that's exactly how it is right now in what I
> > implemented,
> > > except that the concrete DBDictionaries override a method instead of
> > setting
> > > a property. The base impl just returns the default
> > supportsUniqueConstraints
> > > value, but for example, PostgresDictionary overrides
> > > supportsDeferredUniqueConstraints() to simply return false.
> > >
> > > -Patrick
> > >
> > > On 8/28/07, ben short <jamin.short@gmail.com> wrote:
> > > >
> > > > Sure, but I meant for the foreignKeyDeferable and uniqueDeferable etc
> > > > to be hard coded with the capabilities of the db.
> > > >
> > > > Ben
> > > >
> > > > On 8/28/07, Patrick Linskey <plinskey@gmail.com> wrote:
> > > > > (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
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Patrick Linskey
> > > 202 669 5907
> > >
> >
>
>
>
> --
> Patrick Linskey
> 202 669 5907
>

Mime
View raw message