请问  many-to-one 加unique="true" 怎么没能实现一对一,多的一方还是可以插入多个数据,没能实现唯一约束。   数据库里的表删除了,重新根据配置文件生成表,还是这样。hibernate数据库

解决方案 »

  1.   


    *在这里就遇见了一个问题,以为这样设置就ok了,其实这样设置没有任何作用,因为数据库是你手动建好的,而不是hibernate框架建好的,所以你这里设置了unique
    而数据库不会帮你增加一个ddl的语句去定义这个列是唯一的,所以````
    Hibernate中unique的真正意义是根据hbm生成DDL时,如果设置了unique="true"则生成的表中对应的字段就有unique限制,而我是根据数据库的表生成的hbm,所以hbm中设置的unique="true"是没有任何用处的。
    Hibernate不会因为你给这个属性或字段设置了unique为true就给你检查。我们必须让数据库来检查,然后抛出异常。
    但是一般的验证流程是表述层-业务逻辑层-数据映射层-数据库,所以最好是提前检查。
    我们可以使用hibernate建表,在hibernate.cfg.xml中配置<property name="hbm2ddl.auto">update</property> 这样就ok了。
    Hibernate: insert into address_info (address_name) values (?)
    Hibernate: insert into person_info (name, age) values (?, ?)
    Hibernate: insert into person_address (address_id, person_id) values (?, ?)