Oracle 在插入之前休眠删除所有行

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类,这是我为测试Hibernate而构建的第一个类,它使用oracle序列填充ID字段:

@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>
验证
如果设置为“创建”,则每次运行时都会删除并重新创建数据库表


更详细地描述设置。

请格式化您的代码。