hibernate中many-to-one的问题(在线等)

hoptyy 2005-07-05 05:11:02
我的parent的inverse=false,cascade="all"表明由parent控制关联,
并且级联save,update,delete child
save parent时,要使child的主键都为空才可以级联的save child.但是我现在有一个问题
我的parent中不止一个child,应该都存放在parent的set中,但是因为主键为空,在往set中存数据的时候
set认为我的对象都是相同的,只能存一个,怎么办呢?
...全文
415 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenyang2002 2005-07-29
  • 打赏
  • 举报
回复
看看夏昕写的 hibernate 开发指南。
mxlmwl 2005-07-29
  • 打赏
  • 举报
回复
还是建议你用inverse="true",即在子一方进行控制。
mxlmwl 2005-07-29
  • 打赏
  • 举报
回复
主程序
Child child=new Child();
child.setName("你好");
child.setSex(1);
child.setOther("你好,这是一个备注");
child.setUserid("feixing");

Toy t1 = new Toy();
t1.setName("wawa1");
t1.setChild(child);

Toy t2 = new Toy();
t2.setName("wawa2");
t2.setChild(child);

Toy t3 = new Toy();
t3.setName("wawa3");
t3.setChild(child);

//可以不注意先后顺序
bdao.addEntity(t1);
bdao.addEntity(t2);
//bdao.addEntity(child);
--------------------
Child.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<!-- com.demo.test.domain.manytoone.Child root -->
<class name="com.demo.test.domain.manytoone.Child" table="t_child">
<!--<id name="id" column="child_id" unsaved-value="0">
<generator class="sequence">
<param name="sequence">seq_child</param>
</generator>
</id>-->
<id name="id" column="child_id" unsaved-value="0">
<generator class="increment"/>
</id>
<property name="userid" column="child_userid"/>
<property name="name" column="child_name"/>
<property name="sex" column="child_sex"/>
<property name="other" column="child_other"/>
</class>
</hibernate-mapping>
------------------------------------
Toy.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<!-- com.demo.test.domain.manytoone.Toy root -->
<class name="com.demo.test.domain.manytoone.Toy" table="t_toy">
<!--<id name="toyId" column="toy_id" unsaved-value="0">
<generator class="sequence">
<param name="sequence">seq_toy</param>
</generator>
</id>-->
<id name="toyId" column="toy_id">
<generator class="increment"/>
</id>
<property name="name" column="toy_name" type="string"/>

<many-to-one name="child"
column="child_name"
class="com.demo.test.domain.manytoone.Child" property-ref="other" cascade="save-update"/>
</class>
</hibernate-mapping>
--------------
不多说了,Code is All。自己看代码。
jl220 2005-07-23
  • 打赏
  • 举报
回复
子类的unsave_value设为null。
  • 打赏
  • 举报
回复
child类是不是需要重写equals和hashCode阿?
blackdreamzg 2005-07-05
  • 打赏
  • 举报
回复
在mapping中把set换成bag,例如
<bag
name="Pic"
table="pic"
lazy="false"
inverse="false"
cascade="all"
>
<key
column="airdrome_id"
/>

<one-to-many
class="org.qf.hibernate.pojo.Pic"
/>
</bag>
hugebrush 2005-07-05
  • 打赏
  • 举报
回复
没注意过一个对象能不能两次添加到Set,但属性完全一样的两个对象是可以都加入Set中的呀。
fengyun1314 2005-07-05
  • 打赏
  • 举报
回复
既然是由父对象控制,那主键肯定由父控制,好像有一个unsave_vale的可以设置保存的条件。
hoptyy 2005-07-05
  • 打赏
  • 举报
回复
我往数据库中insert一个父对象的时候,它的子对象主键要为空或某一特定值
时才可以自动的insert
clearwater21cn 2005-07-05
  • 打赏
  • 举报
回复
save parent时,要使child的主键都为空才可以级联的save child是什么意思?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧