Hi, ich versuche ein Objekt nur dann kaskadierend persistent zu machen, wenn es nicht schon in der DB existiert.
PersistentObject.java
Tag.java
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
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