JPA Cascade: Entity nur speichern, wenn sie nicht schon existiert

Dieses Thema JPA - Cascade: Entity nur speichern, wenn sie nicht schon existiert im Forum "Data Tier" wurde erstellt von saw, 6. Mai 2014.

Thema: Cascade: Entity nur speichern, wenn sie nicht schon existiert Hi, ich versuche ein Objekt nur dann kaskadierend persistent zu machen, wenn es nicht schon in der DB existiert....

  1. saw
    saw
    Hi, ich versuche ein Objekt nur dann kaskadierend persistent zu machen, wenn es nicht schon in der DB existiert.

    PersistentObject.java
    Code (Text):

    @MappedSuperclass
    public abstract class PersistentObject {

        @Id
        @Column(length = 64)
        private String id;

        public PersistentObject() {
            super();
            this.id = UUID.randomUUID().toString();
        }
           
        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }
       

        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((id == null) ? 0 : id.hashCode());
            return result;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            PersistentObject other = (PersistentObject) obj;
            if (id == null) {
                if (other.id != null)
                    return false;
            } else if (!id.equals(other.id))
                return false;
            return true;
        }
       
    }
     
    Tag.java
    Code (Text):

    @Entity
    public class Tag extends PersistentObject {
       
        public Tag() {
            super();
        }
       
        public Tag(String value) {
            super();
            setId(value);
        }


        @Override
        public String toString() {
            return "Tag [getId()=" + getId() + "]";
        }
       
    }
    Jetzt habe ich eine weitere Klasse, die mehrere Tags referenziert und möchte alles zusammen mit EntityManager#persist() speichern können. ABER: Momentan bekomme ich dabei einen Fehler, der mit sagt "So einen Tag mit dieser ID habe ich schon". Ich suche nach einer Möglichkeit JPA / Hibernate zu sagen es soll in diesem Fall bitte den Tag benutzen, der schon persistent ist.Geht das irgendwie?

    Grüße
    saw
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*