Ich habe diese Entitätsklasse, die erste, die ich gebaut, um Hibernate zu testen, es verwendet eine Oracle-Sequenz, um das ID-Feld zu füllen:
@Entity
@Table(name="COMPANIES")
public class Companies {
private Integer cmpid;
private String cmpname;
private String cmpcountry;
public Companies() {
}
public Companies(String name, String country) {
this.cmpname = name;
this.cmpcountry = country;
}
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "gen_CMP")
@SequenceGenerator(name="gen_CMP", sequenceName = "CMP_ID_SEQ")
@Column(name="CMP_ID", nullable=false)
public Integer getCmpId() {
return this.cmpid;
}
public void setCmpId(Integer cmpid) {
this.cmpid = cmpid;
}
@Column(name="CMP_NAME", nullable=true)
public String getCmpName() {
return this.cmpname;
}
public void setCmpName(String cmpname) {
this.cmpname = cmpname;
}
@Column(name="CMP_COUNTRY", nullable=true)
public String getCmpCountry() {
return this.cmpcountry;
}
public void setCmpCountry(String cmpcountry) {
this.cmpcountry = cmpcountry;
}
}
Dann erstelle ich in meiner Testeinheit ein Unternehmensobjekt und speichere es in der Sitzung:
Companies Companies = new Companies("qqq","FR");
session.save(Companies);
transaction.commit();
Aber jedes Mal werden ALLE Datensätze in der Tabelle COMPANIES in Oracle gelöscht.
Also das erste Mal habe ich versucht, auf meine Daten, es war mit vielen Zeilen gefüllt, und mit diesem Primärschlüssel in anderen Tabellen verwendet, und es war in der Lage, diese Zeilen in Unternehmen und nicht die anderen Tabellen zu löschen ...
Es bedeutet also, dass Hibernate tatsächlich alle meine Einschränkungen deaktiviert, die Tabelle geleert und die neue Zeile aus meiner Testeinheit hinzugefügt hat...
Was mache ich falsch?
Ich möchte nicht, dass der Ruhezustand meine Daten durcheinander bringt, es sei denn, ich sage ihm, dass er das tun soll...