论坛首页 Java企业应用论坛

<one-to-one>是否需要在PO中定义关联对象的引用?(foreign

浏览 3841 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-12-02  
对象A:B = 1:1
public class A {
    private Long id;  // A的主键
}

public class B {
    private Long id;  //外键
   [color=red]// private A aRef;[/color]
}

B.hbm.xml
<one-to-one name="id" class="A" constrained="true" cascade="save-update"/>

请问,一定需要红色的那行才能够实现<one-to-one>的关系吗?例如要求保存B的时候可以级联保存A。[/i]
   发表时间:2003-12-02  
补充B.hbm.xml
<id name="id" column="ID" type="long">
      <generator class="foreign">
           <param name="property">id</param>		
      </generator>
</id>
<one-to-one name="id" class="A" constrained="true" cascade="save-update"/>

B中需要定义A的引用吗?
private A aRef;
不然我发现在
A a = new A();;
a.setXXX();;
……
B b = new B();;
b.setXXX();;
b.setId(a.getId(););;
session.save(b);;

会跑异常,说No persister for:B
0 请登录后投票
   发表时间:2003-12-02  
要。
0 请登录后投票
   发表时间:2003-12-02  
可我把id换成A的引用,也不行:
net.sf.hibernate.MappingException: No persister for:

映射
<class name="com.ebao.test.hibernate.policy.CiPolicy" table="T_CI_POLICY" proxy="com.ebao.test.hibernate.policy.CiPolicy" dynamic-update="true" dynamic-insert="true">
		<id column="POLICY_ID" type="long">
			<generator class="foreign">
				<param name="property">policy</param>				
			</generator>
		</id>
		<one-to-one name="policy" class="com.ebao.test.hibernate.policy.Policy" constrained="true" cascade="save-update"/>
……

<class name="com.ebao.test.hibernate.policy.Policy" table="T_POLICY_GENERAL" proxy="com.ebao.test.hibernate.policy.Policy" dynamic-update="true" dynamic-insert="true">
		<id name="policyId" column="POLICY_ID" type="long">
			<generator class="sequence">
				<param name="sequence">S_POLICY_GENERAL__POLICY_ID</param>
			</generator>
		</id>
<!--这里没有定义到子对象的one-to-one-->
……

CiPolicy的代码:
private Policy policy;
public Policy getPolicy(); {
		return policy;
	}
public void setPolicy(Policy pol); {
		policy = pol;
	}
保存动作的代码:
Policy policy = new Policy();;			
policy.setXXX(new BigDecimal(1.0000););;			
						
			// second create one ci policy
			CiPolicy ciPolicy = new CiPolicy();;
			ciPolicy.setTradeCode(new Long(5););;
			ciPolicy.setPolicy(policy);;				sess.save(ciPolicy);;
			sess.flush();;
0 请登录后投票
   发表时间:2003-12-02  
引用

net.sf.hibernate.MappingException: No persister for:

它的意思是你没有为一个类定义映射(或者你没有把它的映射加到Configuration中),和one-to-one又没有关系。
0 请登录后投票
   发表时间:2003-12-03  
yehs220 写道
引用

net.sf.hibernate.MappingException: No persister for:

它的意思是你没有为一个类定义映射(或者你没有把它的映射加到Configuration中),和one-to-one又没有关系。


  第二次犯这个错误了,谢谢斑竹!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics