hibernate 1对1关联 多层 本帖最后由 jiangbo86 于 2010-01-14 17:46:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这个里面user和student,account都是new的对象,就是说全新增,你三个对象全都save之后一起commit就好,你少save了两个对象如果不想显式的写HibernateDAO.save(user);HibernateDAO.save(student); 你可以试试在你的hibernate配置文件中改一下,类似<many-to-one name="user" class="User" insert="true" update="true" inverse="true" cascade="all"> <column name="USERID" length="32" not-null="true" /> </many-to-one>这是级联添加删除的思路, 你试试看 楼主要求是可以实现的:@SuppressWarnings("serial")public class Test1 implements Serializable { private Long id = null; private String name; private Test2 test2; public Test1() { } public Long getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setTest2(Test2 test2) { this.test2 = test2; } public Test2 getTest2() { return test2; }}<hibernate-mapping package="model" default-access="field"> <class name="Test1" table="Test1" > <!-- Common id property. --> <id name="id" type="long" column="TEST1_ID"> <generator class="native" /> </id> <property name="name" column="TEST1_NAME" type="string" /> <one-to-one name="test2" class="Test2" property-ref="test1" cascade="all"/> </class></hibernate-mapping>@SuppressWarnings("serial")public class Test2 implements Serializable { private Long id = null; private String name; private Test1 test1; private Test3 test3; public Test2() { } public Long getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setTest1(Test1 test1) { this.test1 = test1; } public Test1 getTest1() { return test1; } public void setTest3(Test3 test3) { this.test3 = test3; } public Test3 getTest3() { return test3; }}<hibernate-mapping package="model" default-access="field"> <class name="Test2" table="Test2" > <!-- Common id property. --> <id name="id" type="long" column="TEST2_ID"> <generator class="native" /> </id> <property name="name" column="TEST2_NAME" type="string" /> <many-to-one name="test1" column="TEST1_ID" class="Test1" not-null="true" unique="true" /> <one-to-one name="test3" class="Test3" property-ref="test2" cascade="all"/> </class></hibernate-mapping>@SuppressWarnings("serial")public class Test3 implements Serializable { private Long id = null; private String name; private Test2 test2; public Test3() { } public Long getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setTest2(Test2 test2) { this.test2 = test2; } public Test2 getTest2() { return test2; }}<hibernate-mapping package="model" default-access="field"> <class name="Test3" table="Test3" > <!-- Common id property. --> <id name="id" type="long" column="TEST3_ID"> <generator class="native" /> </id> <property name="name" column="TEST3_NAME" type="string" /> <many-to-one name="test2" column="TEST2_ID" class="Test2" not-null="true" unique="true" /> </class></hibernate-mapping>public class Test1Test2Test2Test { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); Test1 test1 = new Test1(); test1.setName("test1"); Test2 test2 = new Test2(); test2.setName("test2"); Test3 test3 = new Test3(); test3.setName("test3"); test1.setTest2(test2); test2.setTest1(test1); test2.setTest3(test3); test3.setTest2(test2); session.save(test1); tx.commit(); session.close(); }} 我无法实现,这个...我两张表,一张user 一张,userinfo结构user:userid ,passworduserinfo: userinfoid , userid ,name我想1对1 关联起来,然后插入user 的时候,同时插入userinfo。userinfoid 是自动生成,但是userid 要和user表里面进行对应,我user 里面设置的是one-to-one userinfo 是many-to-one ,插入老是只能插入user .userinfo 进不去 高手求教!关于jsp中option 属性问题! 我在做下载的时候出现的问题(牛人们请帮忙) 求救啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111111111111111 求一计算时间的方法 连接数据库是的一个问题 ,请帮忙!! jsp编译中的编码问题 在jsp中怎么将int转换成一个字符串,急!!!100分。 乱码问题! 一个jsp连接数据库(mssql)的问题,老是解决不了,真急人啊!请来帮帮忙! 新手贴:get.header()获取到的是null 请懂php与java的回答一下 依然菜鸟 关于date型
就是说全新增,你三个对象全都save之后一起commit就好,
你少save了两个对象如果不想显式的写HibernateDAO.save(user);HibernateDAO.save(student);
你可以试试在你的hibernate配置文件中改一下,类似
<many-to-one name="user" class="User" insert="true" update="true" inverse="true" cascade="all">
<column name="USERID" length="32" not-null="true" />
</many-to-one>
这是级联添加删除的思路, 你试试看
public class Test1 implements Serializable {
private Long id = null;
private String name;
private Test2 test2;
public Test1() {
} public Long getId() {
return id;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setTest2(Test2 test2) {
this.test2 = test2;
} public Test2 getTest2() {
return test2;
}}<hibernate-mapping package="model" default-access="field"> <class name="Test1" table="Test1" > <!-- Common id property. -->
<id name="id" type="long" column="TEST1_ID">
<generator class="native" />
</id> <property name="name" column="TEST1_NAME" type="string" /> <one-to-one name="test2" class="Test2" property-ref="test1" cascade="all"/>
</class>
</hibernate-mapping>
@SuppressWarnings("serial")
public class Test2 implements Serializable {
private Long id = null;
private String name;
private Test1 test1;
private Test3 test3;
public Test2() {
} public Long getId() {
return id;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setTest1(Test1 test1) {
this.test1 = test1;
} public Test1 getTest1() {
return test1;
} public void setTest3(Test3 test3) {
this.test3 = test3;
} public Test3 getTest3() {
return test3;
}}<hibernate-mapping package="model" default-access="field"> <class name="Test2" table="Test2" > <!-- Common id property. -->
<id name="id" type="long" column="TEST2_ID">
<generator class="native" />
</id> <property name="name" column="TEST2_NAME" type="string" />
<many-to-one name="test1" column="TEST1_ID" class="Test1" not-null="true" unique="true" /> <one-to-one name="test3" class="Test3" property-ref="test2" cascade="all"/>
</class>
</hibernate-mapping>@SuppressWarnings("serial")
public class Test3 implements Serializable {
private Long id = null;
private String name;
private Test2 test2;
public Test3() {
} public Long getId() {
return id;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setTest2(Test2 test2) {
this.test2 = test2;
} public Test2 getTest2() {
return test2;
}}<hibernate-mapping package="model" default-access="field"> <class name="Test3" table="Test3" > <!-- Common id property. -->
<id name="id" type="long" column="TEST3_ID">
<generator class="native" />
</id> <property name="name" column="TEST3_NAME" type="string" />
<many-to-one name="test2" column="TEST2_ID" class="Test2" not-null="true" unique="true" /> </class>
</hibernate-mapping>public class Test1Test2Test2Test { public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Test1 test1 = new Test1();
test1.setName("test1");
Test2 test2 = new Test2();
test2.setName("test2");
Test3 test3 = new Test3();
test3.setName("test3");
test1.setTest2(test2);
test2.setTest1(test1);
test2.setTest3(test3);
test3.setTest2(test2);
session.save(test1);
tx.commit();
session.close();
}
}
我两张表,一张user 一张,userinfo结构
user:userid ,password
userinfo: userinfoid , userid ,name我想1对1 关联起来,然后插入user 的时候,同时插入userinfo。userinfoid 是自动生成,但是userid 要和user表里面进行对应,我user 里面设置的是one-to-one userinfo 是many-to-one ,插入老是只能插入user .userinfo 进不去