hibernate一对一关系,多的一方在many-to-one添加属性unique,但多的一方还是可以插入不止一个?
多的一方的类叫做OutputStoreNotify
<many-to-one name="realGoodsBean" column="fk_bus_no"
class="com.*.bean.RealGoods" unique="true">
</many-to-one>
一的一方的类叫做RealGoods
<one-to-one name="outputStoreNotifyBean" class="com.*.bean.OutputStoreNotify"
fetch="join" cascade="all"></one-to-one>
配置文件中多的一方用了unique限制了其只能是一。
但是,我每次选择同一个RealGoods的对象,往里面set不同的OutputStoreNotifyBean,再插入数据库中仍然可以成功。
mysql> select * from output_store_notify;
+----------------------------------+-----------------+--------------+------------+
| output_store_no | fk_bus_no | input_person | input_date |
+----------------------------------+-----------------+--------------+------------+
| 297e9b0434cf20380134cf220f360001 | fjdasklfjasldkf | NULL | NULL |
| 297e9b0434cf24d00134cf26265e0001 | fjdasklfjasldkf | NULL | NULL |
+----------------------------------+-----------------+--------------+------------+
fk_bus_no为外键,指向realGoods的主键,从表中可以看出是多个output对应于一个realGoods。
请问为什么?
------解决方案--------------------
Hibernate中unique的真正意义是根据hbm生成DDL时,
如果设置了unique="true"则生成的表中对应的字段就有unique限制;
而如果是根据数据库的表生成的hbm,那么在hbm中设置的unique="true"是没有任何用处的。
Hibernate不会因为你给这个属性或字段设置了unique为true就给你检查。