hibernate 1对1关联 多层
--------------------编程问答-------------------- 你这个里面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 ,password
userinfo: userinfoid , userid ,name
我想1对1 关联起来,然后插入user 的时候,同时插入userinfo。userinfoid 是自动生成,但是userid 要和user表里面进行对应,我user 里面设置的是one-to-one userinfo 是many-to-one ,插入老是只能插入user .userinfo 进不去
补充:Java , Web 开发