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?



Reply via email to