[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6898) Hibernate generates double constraints for FK?

Henrik Korsbæk (JIRA) noreply at atlassian.com
Thu Dec 15 05:47:19 EST 2011


Hibernate generates double constraints for FK? 
-----------------------------------------------

                 Key: HHH-6898
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6898
             Project: Hibernate Core
          Issue Type: Bug
          Components: core
    Affects Versions: 3.6.8
         Environment: Progress, java 7, win 7, intellij 11. 
            Reporter: Henrik Korsbæk
            Priority: Minor


When using naming of relations (@org.hibernate.annotations.ForeignKey(name = "undermyndighed_FK")) Hibernates generates both a constraint using the name AND an identical constraint using a generated name: 

alter table Myndighedsrelationer add constraint FK382528159E2E9E11 foreign key (undermyndighedId) references Myndighed;
alter table Myndighedsrelationer add constraint undermyndighed_FK foreign key (undermyndighedId) references Myndighed;

and

alter table Myndighedsrelationer add constraint FK38252815C1F7CE95 foreign key (overmyndighedId) references Myndighed;
alter table Myndighedsrelationer add constraint overmyndighed_FK foreign key (overmyndighedId) references Myndighed;

It should only generate:
alter table Myndighedsrelationer add constraint undermyndighed_FK foreign key (undermyndighedId) references Myndighed;
alter table Myndighedsrelationer add constraint overmyndighed_FK foreign key (overmyndighedId) references Myndighed;

Classes:
_________________________________________________________________________________________________________________________
package dk.ttt.rrr.model.rrr.myndighed;

@dk.team.foundation.bean.mdsd.BaseClazz(extensionClazz = dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer.class)
@javax.persistence.MappedSuperclass
abstract public class AbstractMyndighedsrelationer extends dk.team.mddexample.model.AbstractEntity {
    private static final long serialVersionUID = 1404123320L;
    public static dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz metaType =
        (dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz) dk.team.mddexample.meta.RuntimeMetaModelFactory.getMetaModel()
                                                                                                                         .findById("ID_4F134AAD_7D6B_4a0d_B367_247AC5286AFA");


    @javax.persistence.ManyToOne(cascade =  {
        javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
    , fetch = javax.persistence.FetchType.LAZY)
    @javax.persistence.JoinColumn(nullable = false, name = "undermyndighedId")
    @org.hibernate.annotations.ForeignKey(name = "undermyndighed_FK")
    private dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed undermyndighed;


    @javax.persistence.Enumerated(javax.persistence.EnumType.STRING)
    @javax.persistence.Column(name = "type_", nullable = false)
    private dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationstype type;


    @javax.persistence.ManyToOne(cascade =  {
        javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
    , fetch = javax.persistence.FetchType.LAZY)
    @javax.persistence.JoinColumn(nullable = false, name = "overmyndighedId")
    @org.hibernate.annotations.ForeignKey(name = "overmyndighed_FK")
    private dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed overmyndighed;

    public dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed getUndermyndighed() {
        if (undermyndighed instanceof org.hibernate.proxy.HibernateProxy) {
            undermyndighed = (dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed) ((org.hibernate.impl.SessionImpl) ((org.hibernate.proxy.HibernateProxy) undermyndighed)
                                                                                  .getHibernateLazyInitializer()
                                                                                  .getSession()).getPersistenceContext()
                                                                                  .unproxyAndReassociate(undermyndighed);
        }

        return undermyndighed;
    }

    @java.lang.SuppressWarnings({"serial",
        "unchecked",
        "rawtypes"
    })
    public void setUndermyndighed(
        dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed parameter) {
        new dk.team.foundation.bean.bidirectional.ManyToOneWrapper<dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed, dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>((dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer) this) {
                @Override
                protected void addManySideObjectToOneSideCollection(
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide,
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    ((dk.team.foundation.bean.WrappedSet<dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>) oneSide
                     .getOvermyndighedCollection()).getWrappedCollection()
                     .add(manySide);
                }

                @Override
                protected void removeManySideObjectFromOneSideCollection(
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide,
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    ((dk.team.foundation.bean.WrappedSet<dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>) oneSide
                     .getOvermyndighedCollection()).getWrappedCollection()
                     .remove(manySide);
                }

                @Override
                protected dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed getOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    return ((dk.ttt.rrr.model.rrr.myndighed.AbstractMyndighedsrelationer) manySide).undermyndighed;
                }

                @Override
                protected void setOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide,
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide) {
                    ((dk.ttt.rrr.model.rrr.myndighed.AbstractMyndighedsrelationer) manySide).undermyndighed = oneSide;
                }
            }.updateOneSideObject(parameter);
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationstype getType() {
        return type;
    }

    public void setType(
        dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationstype parameter) {
        this.type = parameter;
    }

    public dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed getOvermyndighed() {
        if (overmyndighed instanceof org.hibernate.proxy.HibernateProxy) {
            overmyndighed = (dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed) ((org.hibernate.impl.SessionImpl) ((org.hibernate.proxy.HibernateProxy) overmyndighed)
                                                                                 .getHibernateLazyInitializer()
                                                                                 .getSession()).getPersistenceContext()
                                                                                 .unproxyAndReassociate(overmyndighed);
        }

        return overmyndighed;
    }

    @java.lang.SuppressWarnings({"serial",
        "unchecked",
        "rawtypes"
    })
    public void setOvermyndighed(
        dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed parameter) {
        new dk.team.foundation.bean.bidirectional.ManyToOneWrapper<dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed, dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>((dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer) this) {
                @Override
                protected void addManySideObjectToOneSideCollection(
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide,
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    ((dk.team.foundation.bean.WrappedSet<dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>) oneSide
                     .getUndermyndighedCollection()).getWrappedCollection()
                     .add(manySide);
                }

                @Override
                protected void removeManySideObjectFromOneSideCollection(
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide,
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    ((dk.team.foundation.bean.WrappedSet<dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer>) oneSide
                     .getUndermyndighedCollection()).getWrappedCollection()
                     .remove(manySide);
                }

                @Override
                protected dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed getOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide) {
                    return ((dk.ttt.rrr.model.rrr.myndighed.AbstractMyndighedsrelationer) manySide).overmyndighed;
                }

                @Override
                protected void setOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer manySide,
                    dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed oneSide) {
                    ((dk.ttt.rrr.model.rrr.myndighed.AbstractMyndighedsrelationer) manySide).overmyndighed = oneSide;
                }
            }.updateOneSideObject(parameter);
    }


    public dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer withUndermyndighed(
        dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed undermyndighed) {
        setUndermyndighed(undermyndighed);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer withType(
        dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationstype type) {
        setType(type);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer) this;
    }


    public dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer withOvermyndighed(
        dk.ttt.rrr.model.rrr.myndighed.IndlandskMyndighed overmyndighed) {
        setOvermyndighed(overmyndighed);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighedsrelationer) this;
    }

    public dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz getMetaType() {
        return metaType;
    }
}

__________________________________________________________________________________________________________________________

package dk.ttt.rrr.model.rrr.myndighed;

@dk.team.foundation.bean.mdsd.BaseClazz(extensionClazz = dk.ttt.rrr.model.rrr.myndighed.Myndighed.class)
@javax.persistence.Entity
@javax.persistence.Inheritance(strategy = javax.persistence.InheritanceType.SINGLE_TABLE)
@javax.persistence.DiscriminatorColumn(name = "DTYPE", discriminatorType = javax.persistence.DiscriminatorType.STRING, length = 255)
@org.hibernate.annotations.DiscriminatorOptions(force = true)
@javax.persistence.Table(name = "Myndighed")
abstract public class AbstractMyndighed extends dk.team.mddexample.model.AbstractEntity {
    private static final long serialVersionUID = 2811393302L;
    public static dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz metaType =
        (dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz) dk.team.mddexample.meta.RuntimeMetaModelFactory.getMetaModel()
                                                                                                                         .findById("ID_421765D5_5F61_4a14_8C2E_F8F8787A9B78");


    @javax.persistence.Basic
    @javax.persistence.Temporal(javax.persistence.TemporalType.DATE)
    @javax.persistence.Column(name = "ikraefttraedelsesdato", nullable = false)
    private java.util.Date ikraefttraedelsesdato;


    @javax.persistence.Basic
    @javax.persistence.Column(name = "kode", nullable = false)
    private int kode;


    @javax.persistence.Basic
    @javax.persistence.Column(name = "navn", nullable = false)
    private String navn;


    @javax.persistence.Basic(optional = true)
    @javax.persistence.Temporal(javax.persistence.TemporalType.DATE)
    @javax.persistence.Column(name = "ophoersdato")
    private java.util.Date ophoersdato;

    @javax.persistence.Basic
    @javax.persistence.Column(name = "sekundaer", nullable = false)
    private boolean sekundaer;


    @javax.persistence.OneToMany(cascade =  {
        javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
    , targetEntity = dk.ttt.rrr.model.rrr.sag.SagsRolle.class, mappedBy = "myndighed", fetch = javax.persistence.FetchType.LAZY)
    private java.util.Set<dk.ttt.rrr.model.rrr.sag.SagsRolle> rolleCollection = new java.util.HashSet<dk.ttt.rrr.model.rrr.sag.SagsRolle>();

    public java.util.Date getIkraefttraedelsesdato() {
        return ikraefttraedelsesdato;
    }

    public void setIkraefttraedelsesdato(java.util.Date parameter) {
        this.ikraefttraedelsesdato = parameter;
    }


    public int getKode() {
        return kode;
    }

 
    public void setKode(int parameter) {
        this.kode = parameter;
    }

    public String getNavn() {
        return navn;
    }

    public void setNavn(String parameter) {
        this.navn = parameter;
    }

    public java.util.Date getOphoersdato() {
        return ophoersdato;
    }

    public void setOphoersdato(java.util.Date parameter) {
        this.ophoersdato = parameter;
    }

    public boolean isSekundaer() {
        return sekundaer;
    }

    public void setSekundaer(boolean parameter) {
        this.sekundaer = parameter;
    }

    @java.lang.SuppressWarnings({"serial",
        "unchecked",
        "rawtypes"
    })
    public java.util.Set<dk.ttt.rrr.model.rrr.sag.SagsRolle> getRolleCollection() {
        return new dk.team.foundation.bean.bidirectional.OneToManySetWrapper<dk.ttt.rrr.model.rrr.myndighed.Myndighed, dk.ttt.rrr.model.rrr.sag.SagsRolle>((dk.ttt.rrr.model.rrr.myndighed.Myndighed) this,
            rolleCollection) {
                @Override
                protected dk.ttt.rrr.model.rrr.myndighed.Myndighed getOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.sag.SagsRolle manySideObject) {
                    return manySideObject.getMyndighed();
                }

                @Override
                protected void setOneSideObjectInManySideObject(
                    dk.ttt.rrr.model.rrr.sag.SagsRolle manySideObject,
                    dk.ttt.rrr.model.rrr.myndighed.Myndighed oneSideObject) {
                    manySideObject.setMyndighed(oneSideObject);
                }
            };
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed withIkraefttraedelsesdato(
        java.util.Date ikraefttraedelsesdato) {
        setIkraefttraedelsesdato(ikraefttraedelsesdato);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed withKode(int kode) {
        setKode(kode);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed withNavn(String navn) {
        setNavn(navn);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed withOphoersdato(
        java.util.Date ophoersdato) {
        setOphoersdato(ophoersdato);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed withSekundaer(
        boolean sekundaer) {
        setSekundaer(sekundaer);

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.ttt.rrr.model.rrr.myndighed.Myndighed addToRolleCollection(
        dk.ttt.rrr.model.rrr.sag.SagsRolle... values) {
        getRolleCollection().addAll(java.util.Arrays.asList(values));

        return (dk.ttt.rrr.model.rrr.myndighed.Myndighed) this;
    }

    public dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz getMetaType() {
        return metaType;
    }
}






--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the hibernate-issues mailing list