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

saw

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

PersistentObject.java
Code:
@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:
@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
 

Neue Themen


Zurück
Oben