此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【zhangshudo】截止到2008-07-18 23:36:07的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:40 每贴平均分数:20
回帖的总数量:7 得分贴总数量:3 回帖的得分率:42%
结贴的总数量:2 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
楼主【zhangshudo】截止到2008-07-18 23:36:07的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:40 每贴平均分数:20
回帖的总数量:7 得分贴总数量:3 回帖的得分率:42%
结贴的总数量:2 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="net.M2O">
<class
name="Person"
table="person"
>
<meta attribute="sync-DAO">false</meta>
<id
name="Id"
type="integer"
column="personid"
>
<generator class="increment"/>
</id> <property
name="Name"
column="name"
type="string"
not-null="false"
length="10"
/>
<many-to-one name="Address" column="address_pid"></many-to-one>
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="net.M2O">
<class
name="Address"
table="address"
>
<meta attribute="sync-DAO">false</meta>
<id
name="Id"
type="integer"
column="addressid"
>
<generator class="increment"/>
</id> <property
name="Addressdatail"
column="addressdatail"
type="string"
not-null="false"
length="50"
/>
</class>
</hibernate-mapping>
private int Id;//人员id
private String Name;//人员名字
private Address address; //地址
public Address getAddress()
{
return this.address;
}
public void setAddress(Address address)
{
this.address=address;
}
public int getId()
{
return this.Id;
} public void setId(int id)
{
this.Id=id;
}
public String getName()
{
return Name;
}
public void setName(String name)
{
this.Name=name;
}
}
public class Address {
private int Id;//地址的id
private String Addressdatail;//地址的信息public void setId(int id)
{
this.Id=id;
}public int getId()
{
return Id;
}public void setAddressdatail(String addressdetail)
{
this.Addressdatail=addressdetail;
}public String getAddressdatail()
{
return Addressdatail;
}}
import org.hibernate.Transaction;public class aaa { public static void main(String[] args) { Session sess=HibernateUtil.currentSession();//获得session
Transaction tx=sess.beginTransaction();
Address a=new Address();//new 地址
a.setId(1);
a.setAddressdatail("aaa");
Person p=new Person();//new 人员
p.setId(1);
p.setName("tom");
p.setAddress(a);//添加地址
sess.save(p);
tx.commit();
sess.close();
System.out.println("ok");
}}
引用了address表中的主键,
当你调用sess.save(p); 时
hibernate会去查找address表中的主键id,
但是你之前并没有调用sess.save(a);
所以hibernate查不到,id会是空值。修改如下,加一句代码就行了。Address a=new Address();//new 地址
a.setId(1);
a.setAddressdatail("aaa"); sess.save(a);Person p=new Person();//new 人员
p.setId(1);
p.setName("tom");
p.setAddress(a);//添加地址 sess.save(p);
tx.commit(); 这样修改之后,表中就会有数据了。
<set name="Address" inverse="true" cascade="save-update">
<key column="Address_ID" />
<one-to-many class="net.M2O.Address" />
</set>
然后在测试主程序调用的时候是
Transaction tx=sess.beginTransaction(); Address a=new Address();//new 地址
a.setId(1);
a.setAddressdatail("aaa"); Person p=new Person();//new 人员
p.setId(1);
p.setName("tom");
p.getAddress().add(a);//添加地址
sess.save(p);
tx.commit();
你可以试试看