3 Stimmen

Hibernate löscht alle Zeilen vor dem Einfügen

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...

1voto

Vincent Ramdhanie Punkte 100426

In Ihrer Hibernate-Konfiguration müssen Sie hbm2dll auf validieren setzen. Etwa so:

 <property name="hbm2ddl.auto">validate</property>

Wenn es auf "Erstellen" eingestellt ist, werden die Datenbanktabellen bei jeder Ausführung gelöscht und neu erstellt.

Diese Seite beschreibt die Einstellung im Detail.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X