代码之家  ›  专栏  ›  技术社区  ›  guigui42

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

  •  2
  • guigui42  · 技术社区  · 14 年前

    我有一个实体类,是我为测试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;
                        }
    
    }
    

    然后在我的测试单元中,创建一个Companies对象,然后将其保存在会话中:

    Companies Companies = new Companies("qqq","FR");
    session.save(Companies);
    transaction.commit();
    

    但每次,它都会删除Oracle中COMPANIES表中的所有记录。

    所以我第一次尝试我的数据时,它充满了许多行,并且在其他表中使用了这个主键,它能够删除公司中的那些行,而不是其他表。。。

    我做错什么了?

    我不想hibernate弄乱我的数据,除非我告诉它这样做。。。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Vincent Ramdhanie    14 年前

    在hibernate配置中,需要将hbm2dll设置为验证。像这样:

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

    This page