Oracle 在插入之前休眠删除所有行
我有一个entity类,这是我为测试Hibernate而构建的第一个类,它使用oracle序列填充ID字段:Oracle 在插入之前休眠删除所有行,oracle,hibernate,delete-row,Oracle,Hibernate,Delete Row,我有一个entity类,这是我为测试Hibernate而构建的第一个类,它使用oracle序列填充ID字段: @Entity @Table(name="COMPANIES") public class Companies { private Integer cmpid; private String cmpname; private String cmpcountry;
@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;
}
}
然后在我的测试单元中,我创建一个companys对象,然后将其保存在会话中:
Companies Companies = new Companies("qqq","FR");
session.save(Companies);
transaction.commit();
但每次,它都会删除Oracle中Companys表中的所有记录
所以当我第一次尝试我的数据时,它被许多行填充,并且使用其他表中使用的主键,它能够删除公司中的那些行,而不是其他表中的行
这意味着Hibernate实际上禁用了我的所有约束,清空了表,并从我的测试单元中添加了新行
我做错了什么
我不希望hibernate弄乱我的数据,除非我告诉它这样做…在hibernate配置中,您需要设置hbm2dll进行验证。大概是这样的:
<property name="hbm2ddl.auto">validate</property>
验证
如果设置为“创建”,则每次运行时都会删除并重新创建数据库表
更详细地描述设置。请格式化您的代码。