You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Boblitz John <Jo...@BERTSCHI.com> on 2011/06/01 11:09:51 UTC

AW: Reverse Mapping PostgresDB - unique constraints not generated.

Hello Chris,

Thanks for the tip.

I tried both <unique ... > and <uniqueindex ... > but the results
were the same.

Any idea if this has ever worked in the past?

John

-----Ursprüngliche Nachricht-----
Von: Rick Curtis [mailto:curtisr7@gmail.com] 
Gesendet: Dienstag, 31. Mai 2011 16:09
An: users@openjpa.apache.org
Betreff: Re: Reverse Mapping PostgresDB - unique constraints not generated.

John -

I have a shot in the dark for you... Try changing <index name="...." to <unique name="...."

On Mon, May 23, 2011 at 1:30 AM, Boblitz John <Jo...@bertschi.com>wrote:

> Good Morning,
>
> I wont spam the list with this, but I am reposting once in hopes of 
> getting an answer ....
>
> So, last time asking, please forgive the shameless repost!
>
>
> -----Ursprüngliche Nachricht-----
> Von: Boblitz John [mailto:John.Boblitz@BERTSCHI.com]
> Gesendet: Freitag, 20. Mai 2011 08:26
> An: users@openjpa.apache.org
> Betreff: Reverse Mapping PostgresDB - unique constraints not generated.
>
> Hello,
>
> I am attempted to reverse map a PostgresDB, and, after some initial 
> problems I suceeded in generating a schema with the SchemaTool and 
> then the annotated classes via the ReverseMappingTool.
>
> I am generally very happy with the results.  However, none of my 
> unique constraints are annotated in the classes!  The data regarding 
> the constrainst is in the schema.xml - but does not get used.
>
> I searched the list and extensively on the net, but most of what I 
> find has nothing to do with the problem ...
>
>
> Here an example from the schema.xml:
>
>
> <table name="exchangerate">
>  <pk name="pk_exchangerate" column="uniqueid"/>
>    <column name="uniqueid" type="bigint" type-name="int8" not-null="true"
> size="19"/>
>    <column name="type" type="char" type-name="bpchar" not-null="true"
> size="2"/>
>    <column name="fromcurrency" type="bigint" type-name="int8"
> not-null="true" size="19"/>
>    <column name="tocurrency" type="bigint" type-name="int8" not-null="true"
> size="19"/>
>    <column name="begin" type="date" not-null="true" size="13"/>
>    <column name="modifier" type="smallint" type-name="int2" not-null="true"
> default="1" size="5"/>
>    <column name="rate" type="numeric" not-null="true" size="10"
> decimal-digits="5"/>
>    <fk name="fk_currency_of_exchange_rate_tocurrency"
> delete-action="restrict" to-table="galaxy11.currency" column="tocurrency"/>
>    <fk name="fk_currency_of_exchange_rate_fromcurrency"
> delete-action="restrict" to-table="galaxy11.currency"
> column="fromcurrency"/>
>    <index name="uq_exchangerate_type_to_from_begin" unique="true">
>      <on column="type"/>
>      <on column="tocurrency"/>
>      <on column="fromcurrency"/>
>      <on column="begin"/>
>    </index>
>    <index name="uq_exchangerate_uniqueid" unique="true" 
> column="uniqueid"/> </table>
>
>
>
> ======================================================================
> =====================================================================
>
> And here, the generated class:  the Unique Constraint 
> "uq_exchangerate_type_to_from_begin" is missing ....
>
>
>
> package g11.persistence.model;
>
> import java.util.*;
> import javax.persistence.*;
>
> /**
>  * Auto-generated by:
>  * 
> org.apache.openjpa.jdbc.meta.ReverseMappingTool$AnnotatedCodeGenerator
>  */
> @Entity
> @Table(schema="galaxy11", name="exchangerate")
> @IdClass(g11.persistence.model.ExchangerateId.class)
> public class Exchangerate {
>
>        @Basic
>        @Column(nullable=false)
>        @Temporal(TemporalType.DATE)
>        private Date begin;
>
>        @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
>        @JoinColumn(name="fromcurrency", columnDefinition="int8",
> nullable=false)
>        private Currency fkCurrencyOfExchangeRateFromcurrency;
>
>        @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
>        @JoinColumn(name="tocurrency", columnDefinition="int8",
> nullable=false)
>        private Currency fkCurrencyOfExchangeRateTocurrency;
>
>        @Basic
>        @Column(columnDefinition="int2")
>        private short modifier;
>
>        @Basic
>        private double rate;
>
>        @Basic
>        @Column(columnDefinition="bpchar", nullable=false, length=2)
>        private String type;
>
>        @Id
>        @Column(columnDefinition="int8")
>        private long uniqueid;
>
>
>        public Exchangerate () {
>        }
>
>        public Exchangerate (long uniqueid) {
>                this.uniqueid = uniqueid;
>        }
>
>        public Date getBegin () {
>                return begin;
>        }
>
>        public void setBegin (Date begin) {
>                this.begin = begin;
>        }
>
>        public Currency getFkCurrencyOfExchangeRateFromcurrency () {
>                return fkCurrencyOfExchangeRateFromcurrency;
>        }
>
>        public void setFkCurrencyOfExchangeRateFromcurrency (Currency
> fkCurrencyOfExchangeRateFromcurrency) {
>                this.fkCurrencyOfExchangeRateFromcurrency = 
> fkCurrencyOfExchangeRateFromcurrency;
>        }
>
>        public Currency getFkCurrencyOfExchangeRateTocurrency () {
>                return fkCurrencyOfExchangeRateTocurrency;
>        }
>
>        public void setFkCurrencyOfExchangeRateTocurrency (Currency
> fkCurrencyOfExchangeRateTocurrency) {
>                this.fkCurrencyOfExchangeRateTocurrency = 
> fkCurrencyOfExchangeRateTocurrency;
>        }
>
>        public short getModifier () {
>                return modifier;
>        }
>
>        public void setModifier (short modifier) {
>                this.modifier = modifier;
>        }
>
>        public double getRate () {
>                return rate;
>        }
>
>        public void setRate (double rate) {
>                this.rate = rate;
>        }
>
>        public String getType () {
>                return type;
>        }
>
>        public void setType (String type) {
>                this.type = type;
>        }
>
>        public long getUniqueid () {
>                return uniqueid;
>        }
>
>        public void setUniqueid (long uniqueid) {
>                this.uniqueid = uniqueid;
>        }
> }
>
>
> I expected:
>
> @Table(schema="galaxy11", name="exchangerate"
> uniqueConstraints=@Unique(columnNames={"type", "tocurrency", 
> "fromcurrency",
> "begin"})
>
>
> Is this a known problem?  Any way to get the results I'm looking for?
>
> Specs:
>
>        openJPA 2.1.0
>        postgresql-8.4-702.jdbc4.jar
>
>        On Eclipse Helios
>
>
> Thanks.
>
> 
>
> John
>
> ----
>
> Who is General Failure, and why is he reading my hard disk?
>
>
>
>


--
*Rick Curtis*

Re: Reverse Mapping PostgresDB - unique constraints not generated.

Posted by Rick Curtis <cu...@gmail.com>.
John -

I can't say for certain that this has ever worked... let me know if you come
up with something!

Thanks,
Rick

On Wed, Jun 1, 2011 at 4:09 AM, Boblitz John <Jo...@bertschi.com>wrote:

> Hello Chris,
>
> Thanks for the tip.
>
> I tried both <unique ... > and <uniqueindex ... > but the results
> were the same.
>
> Any idea if this has ever worked in the past?
>
> John
>
> -----Ursprüngliche Nachricht-----
> Von: Rick Curtis [mailto:curtisr7@gmail.com]
> Gesendet: Dienstag, 31. Mai 2011 16:09
> An: users@openjpa.apache.org
> Betreff: Re: Reverse Mapping PostgresDB - unique constraints not generated.
>
> John -
>
> I have a shot in the dark for you... Try changing <index name="...." to
> <unique name="...."
>
> On Mon, May 23, 2011 at 1:30 AM, Boblitz John <John.Boblitz@bertschi.com
> >wrote:
>
> > Good Morning,
> >
> > I wont spam the list with this, but I am reposting once in hopes of
> > getting an answer ....
> >
> > So, last time asking, please forgive the shameless repost!
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Boblitz John [mailto:John.Boblitz@BERTSCHI.com]
> > Gesendet: Freitag, 20. Mai 2011 08:26
> > An: users@openjpa.apache.org
> > Betreff: Reverse Mapping PostgresDB - unique constraints not generated.
> >
> > Hello,
> >
> > I am attempted to reverse map a PostgresDB, and, after some initial
> > problems I suceeded in generating a schema with the SchemaTool and
> > then the annotated classes via the ReverseMappingTool.
> >
> > I am generally very happy with the results.  However, none of my
> > unique constraints are annotated in the classes!  The data regarding
> > the constrainst is in the schema.xml - but does not get used.
> >
> > I searched the list and extensively on the net, but most of what I
> > find has nothing to do with the problem ...
> >
> >
> > Here an example from the schema.xml:
> >
> >
> > <table name="exchangerate">
> >  <pk name="pk_exchangerate" column="uniqueid"/>
> >    <column name="uniqueid" type="bigint" type-name="int8" not-null="true"
> > size="19"/>
> >    <column name="type" type="char" type-name="bpchar" not-null="true"
> > size="2"/>
> >    <column name="fromcurrency" type="bigint" type-name="int8"
> > not-null="true" size="19"/>
> >    <column name="tocurrency" type="bigint" type-name="int8"
> not-null="true"
> > size="19"/>
> >    <column name="begin" type="date" not-null="true" size="13"/>
> >    <column name="modifier" type="smallint" type-name="int2"
> not-null="true"
> > default="1" size="5"/>
> >    <column name="rate" type="numeric" not-null="true" size="10"
> > decimal-digits="5"/>
> >    <fk name="fk_currency_of_exchange_rate_tocurrency"
> > delete-action="restrict" to-table="galaxy11.currency"
> column="tocurrency"/>
> >    <fk name="fk_currency_of_exchange_rate_fromcurrency"
> > delete-action="restrict" to-table="galaxy11.currency"
> > column="fromcurrency"/>
> >    <index name="uq_exchangerate_type_to_from_begin" unique="true">
> >      <on column="type"/>
> >      <on column="tocurrency"/>
> >      <on column="fromcurrency"/>
> >      <on column="begin"/>
> >    </index>
> >    <index name="uq_exchangerate_uniqueid" unique="true"
> > column="uniqueid"/> </table>
> >
> >
> >
> > ======================================================================
> > =====================================================================
> >
> > And here, the generated class:  the Unique Constraint
> > "uq_exchangerate_type_to_from_begin" is missing ....
> >
> >
> >
> > package g11.persistence.model;
> >
> > import java.util.*;
> > import javax.persistence.*;
> >
> > /**
> >  * Auto-generated by:
> >  *
> > org.apache.openjpa.jdbc.meta.ReverseMappingTool$AnnotatedCodeGenerator
> >  */
> > @Entity
> > @Table(schema="galaxy11", name="exchangerate")
> > @IdClass(g11.persistence.model.ExchangerateId.class)
> > public class Exchangerate {
> >
> >        @Basic
> >        @Column(nullable=false)
> >        @Temporal(TemporalType.DATE)
> >        private Date begin;
> >
> >        @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
> >        @JoinColumn(name="fromcurrency", columnDefinition="int8",
> > nullable=false)
> >        private Currency fkCurrencyOfExchangeRateFromcurrency;
> >
> >        @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
> >        @JoinColumn(name="tocurrency", columnDefinition="int8",
> > nullable=false)
> >        private Currency fkCurrencyOfExchangeRateTocurrency;
> >
> >        @Basic
> >        @Column(columnDefinition="int2")
> >        private short modifier;
> >
> >        @Basic
> >        private double rate;
> >
> >        @Basic
> >        @Column(columnDefinition="bpchar", nullable=false, length=2)
> >        private String type;
> >
> >        @Id
> >        @Column(columnDefinition="int8")
> >        private long uniqueid;
> >
> >
> >        public Exchangerate () {
> >        }
> >
> >        public Exchangerate (long uniqueid) {
> >                this.uniqueid = uniqueid;
> >        }
> >
> >        public Date getBegin () {
> >                return begin;
> >        }
> >
> >        public void setBegin (Date begin) {
> >                this.begin = begin;
> >        }
> >
> >        public Currency getFkCurrencyOfExchangeRateFromcurrency () {
> >                return fkCurrencyOfExchangeRateFromcurrency;
> >        }
> >
> >        public void setFkCurrencyOfExchangeRateFromcurrency (Currency
> > fkCurrencyOfExchangeRateFromcurrency) {
> >                this.fkCurrencyOfExchangeRateFromcurrency =
> > fkCurrencyOfExchangeRateFromcurrency;
> >        }
> >
> >        public Currency getFkCurrencyOfExchangeRateTocurrency () {
> >                return fkCurrencyOfExchangeRateTocurrency;
> >        }
> >
> >        public void setFkCurrencyOfExchangeRateTocurrency (Currency
> > fkCurrencyOfExchangeRateTocurrency) {
> >                this.fkCurrencyOfExchangeRateTocurrency =
> > fkCurrencyOfExchangeRateTocurrency;
> >        }
> >
> >        public short getModifier () {
> >                return modifier;
> >        }
> >
> >        public void setModifier (short modifier) {
> >                this.modifier = modifier;
> >        }
> >
> >        public double getRate () {
> >                return rate;
> >        }
> >
> >        public void setRate (double rate) {
> >                this.rate = rate;
> >        }
> >
> >        public String getType () {
> >                return type;
> >        }
> >
> >        public void setType (String type) {
> >                this.type = type;
> >        }
> >
> >        public long getUniqueid () {
> >                return uniqueid;
> >        }
> >
> >        public void setUniqueid (long uniqueid) {
> >                this.uniqueid = uniqueid;
> >        }
> > }
> >
> >
> > I expected:
> >
> > @Table(schema="galaxy11", name="exchangerate"
> > uniqueConstraints=@Unique(columnNames={"type", "tocurrency",
> > "fromcurrency",
> > "begin"})
> >
> >
> > Is this a known problem?  Any way to get the results I'm looking for?
> >
> > Specs:
> >
> >        openJPA 2.1.0
> >        postgresql-8.4-702.jdbc4.jar
> >
> >        On Eclipse Helios
> >
> >
> > Thanks.
> >
> > 
> >
> > John
> >
> > ----
> >
> > Who is General Failure, and why is he reading my hard disk?
> >
> >
> >
> >
>
>
> --
> *Rick Curtis*
>



-- 
*Rick Curtis*