hibernate 一对多高手进 帮忙解决No row with the given identifier exists 本帖最后由 kkctf 于 2010-11-23 22:38:08 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Annotation没怎么用过啊。不会No row 报错时,我基本上都是在映射文件中加上一个not-found属性,将他设置为ignore。 Dog的owner_id不是Owner的外键为什么你还要让他们关联呢 up !你两个表都没有建立关系,干吗还要ManyToOne 你参考这个写:(实体关系要先映射,然后生成表。或者先建立好表关系,然后反向生成实体和映射。)many-to-one关系在数据库中如何体现,在JavaBean中如何体现,在Hibernate中如何映射many-to-one关系。1、数据库中:一个表的主健对应另一个表的外健。2、javaBean中:一个对象包含另一个对象的一个引用,另一个对象包含这个对象的一组(集合,用set)引用。3、在hibernate中:用set.key指定具体列。我们以订单Order(一方)和订单项Item(多方)为例:a、Order.hbm.xml的写法:<class name="Order" table="ec_order"><id name="id" column="id" type="integer"><generator class="native" /></id><property name="owner" column="owner" type="string" /><property name="phone" column="phone" type="string" /><property name="address" column="address" type="string" /><set name="items" cascade="all-delete-orphan" inverse="true"><key column="orderid" /><one-to-many class="Item" /></set></class>注:inverse=“true”表示忽略集合一端的变化。cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把cascade设为all的情况:在我们调用session.delete(order)时,会删除order下所有的item,但是如果调用order.getItems().remove(item),然后调用session.update(order)则不会删除此item,只会把 ec_item表中该条item记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上“delete-orphan”。b、Item.hbm.xml的写法<class name="Item" table="ec_item"><id name="id" column="id" type="integer"><generator class="native" /></id><property name="product" column="product" type="string" /><property name="amount" column="amount" type="integer" /><many-to-one name="order" class="Order" column="orderid"/></class> 请问annotation怎么设置 帮忙查查吧 整死我了吧.搞了一天还是报错 关于表格数据显示的问题,大家发言讨论讨论。【下班帖】 一個可能是緩存的問題,一直沒解決,請高手幫幫忙 javascrip取值问题 关于JSP的错误!谢谢各位大哥! 如何在WEB SERVER中获取用户信息 请高手来帮忙!使用jspsmartupload组件只能上传文本文件?上传其他文件总是抛出异常! 一个关于servlet和applet的简单问题 一个类中两个方法,怎么在方法间传值 如何自己写一个session的程序,不用j2ee提供的session api java html 转义的问题 (急)级联下拉框的问题。
Hibernate中如何映射many-to-one关系。
1、数据库中:一个表的主健对应另一个表的外健。
2、javaBean中:一个对象包含另一个对象的一个引用,另一个对象包含这个对象的一组(集合,用set)引用。
3、在hibernate中:用set.key指定具体列。
我们以订单Order(一方)和订单项Item(多方)为例:
a、Order.hbm.xml的写法:<class name="Order" table="ec_order">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="owner" column="owner" type="string" />
<property name="phone" column="phone" type="string" />
<property name="address" column="address" type="string" />
<set name="items" cascade="all-delete-orphan" inverse="true">
<key column="orderid" />
<one-to-many class="Item" />
</set>
</class>注:inverse=“true”表示忽略集合一端的变化。
cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把cascade设为all的情况:在我们调用session.delete(order)时,会删除order下所有的item,但是如果调用order.getItems().remove(item),然后调用session.update(order)则不会删除此item,只会把 ec_item表中该条item记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上“delete-orphan”。
b、Item.hbm.xml的写法<class name="Item" table="ec_item">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="product" column="product" type="string" />
<property name="amount" column="amount" type="integer" />
<many-to-one name="order" class="Order" column="orderid"/>
</class>