当前位置:编程学习 > JAVA >>

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 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,