我写的一个Hibernate程序,many-to-one的。求大家指点

徐淮杰 2013-01-10 10:04:25
大家好,我刚写了一个 hibernate + struts 的程序。 主要是一个父类,一个子类。子类通过 many-to-one的方式引用父类。但是子类始终得不到父类。下面贴出代码:

父类:

public class DevCurve {

public int dev_type; //pk

public int curve_id;
... get set ...
}


子类:

public class FacilityInfo {
public int id; //pk

public String name;


public SubstationInfo substation;

public InverterRoom inverterroom;

public DevCurve devtype;
.... get set ...
}


hibernate中的配置:
父类:

<class name="com.sacnzcx.app.domain.DevCurve" table="WEB_DevCurve">
<id column="id" name="dev_type" type="integer"/>
<property column="curve_id" generated="never" lazy="false"
name="curve_id" type="integer"/>
</class>


子类:

<class name="com.sacnzcx.app.domain.FacilityInfo" table="FAC_INFO_LIB">
<id column="REC_ID" name="id" type="int">
<generator class="native"/>
</id>
<property column="REC_NAME" generated="never" lazy="false" name="name" type="string"/>
<many-to-one column="DEV_TYPE" name="devtype" class="com.sacnzcx.app.domain.DevCurve"/>
</class>


现在问题是这样的:
如果把 devtype 改为 integer 的普通 property ,是可以取出来的。
问题是使用 many-to-one ,取出来的的 DevCurve,值都是0. 这是为什么呢?
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2013-01-11
  • 打赏
  • 举报
回复
引用 5 楼 dracularking 的回复:
引用 4 楼 fangmingshijie 的回复: many-to-one 这个东西就告诉hibernate,是多对一的映射关系,然后根据反射原理去让many-to-one 内配置的class和你这个class映射起来了。反射技术实现的。 +1 此外,理论上来说,many-to-one这个关系映射配置好后,many方类中甚至无须one方关联属性存在,系统仍可知道两实体类的关系,只是对于……
即是单向关联
dracularking 2013-01-11
  • 打赏
  • 举报
回复
引用 4 楼 fangmingshijie 的回复:
many-to-one 这个东西就告诉hibernate,是多对一的映射关系,然后根据反射原理去让many-to-one 内配置的class和你这个class映射起来了。反射技术实现的。
+1 此外,理论上来说,many-to-one这个关系映射配置好后,many方类中甚至无须one方关联属性存在,系统仍可知道两实体类的关系,只是对于实体类层面来说,和表关系之间不是完全映射了而已。
  • 打赏
  • 举报
回复
many-to-one 这个东西就告诉hibernate,是多对一的映射关系,然后根据反射原理去让many-to-one 内配置的class和你这个class映射起来了。反射技术实现的。
徐淮杰 2013-01-11
  • 打赏
  • 举报
回复
我的意思是 FacilityInfo 类我是用 devtype 变量来指向 DevCurve 的。name 不写 devtype ,系统怎么知道我是给 devtype 字段配的 many-to-one 呢?
徐淮杰 2013-01-11
  • 打赏
  • 举报
回复
请问,那 FacilityInfo 这个子键系统怎么能对应上呢?
  • 打赏
  • 举报
回复
<many-to-one column="DEV_TYPE" name="devtype" class="com.sacnzcx.app.domain.DevCurve"/>你这映射里面的name属性的值对应的应该是DevCurve提供的外键。比如curve_id
  • 打赏
  • 举报
回复
引用 5 楼 dracularking 的回复:
引用 4 楼 fangmingshijie 的回复:many-to-one 这个东西就告诉hibernate,是多对一的映射关系,然后根据反射原理去让many-to-one 内配置的class和你这个class映射起来了。反射技术实现的。 +1 此外,理论上来说,many-to-one这个关系映射配置好后,many方类中甚至无须one方关联属性存在,系统仍可知道两……
是的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧