hibernate 中如何处理composite identif 的对象

03-08-12 newpaul
问题描述

父类对象 pt

子类对象复合关键字 child1,child2

1

如何载入一个带有复合关键字的对象

session.load(child1.class,XXX) 这里的XXX是否应该是

<composite-id name="child_id" class="childPK">

</composite-id>

这里的childPK

2

如何用cascading update() 来更新带有复合关键字的子类对象

我设置cascade="all"

parent pt=(parent)session.load(.............)

//update child1

child child1=(child)parent.getchilds().iterator.next();

child1.setname(XXXXX);

// add child2

child child2=new child();

parent.getchilds().add(child2);

child2.setparent(pt);

session.update(pt);

但实际上 并没有更新child1 和添加child2.如果不是复合关键字便可以

如何处理呢?

谢谢

blackwhites
2003-08-12 13:36
把复合主建做为1个类处理

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

<class name="com.test.Testcomposit" table="test">

<composite-id class="com.test.Testcompositkey" name="id">

<key-property column="id" length="20" name="id" type="java.lang.Long"/>

<key-property column="demo" length="2" name="demo" type="java.lang.String"/>

</composite-id>

<property column="sex" length="11" name="sex" type="java.lang.Integer"/>

</class>

</hibernate-mapping>

public class Testcompositkey implements Serializable{

private long id;

private String demo;

public Testcompositkey() {

}

public Testcompositkey(long id,String demo){

this.id = id;

this.demo = demo;

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getDemo() {

return demo;

}

public void setDemo(String demo) {

this.demo = demo;

}

}

public class Testcomposit implements Serializable {

private int sex;

private Testcompositkey id;

public Testcomposit() {

}

public int getSex() {

return sex;

}

public void setSex(int sex) {

this.sex = sex;

}

public Testcompositkey getId() {

return id;

}

public void setId(Testcompositkey id) {

this.id = id;

}

}

newpaul
2003-08-12 13:51
对 复合主建使用一个类处理了

但使用Cascades=all更新父类的时候,子类也更新了,但对于符合主建 我在父类添加一个新的子类 在调用update(parent)的时候 新添加的子类并没有插入到数据库中 ,我看文档上写的是 只能用save()子类对象才可以

是不是这样的阿

猜你喜欢