关于网友提出的“ Hibernate多对一单向关联问题,求助~”问题疑问,本网通过在网上对“ Hibernate多对一单向关联问题,求助~”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: Hibernate多对一单向关联问题,求助~
描述:本帖最后由 wanghaoxyq 于 2014-08-26 13:21:08 编辑
hibernatejavaweb
项目里面有Product和Factory两个类,各自的属性如下:
public class Factory {
private int factoryId;
private String factoryName;
public class Product {
private Integer id; //唯一性标识
private String name; //产品名称
private Double price; //产品价格
private Factory factory; //生产商
其它的get set方法都省掉了。
然后,Product.hbm.xml文件里factory的映射如下:
在使用Hibernate时,获取对象语句如下:
session = HibernateInitialize.getSession();
session.beginTransaction();
Product product = (Product)session.get(Product.class,new Integer("1"));
System.out.println("产品名称:"+product.getName());
System.out.println("产品价格:"+product.getPrice()+"元");
System.out.println("生产商:"+product.getFactory().getFactoryName());
session.getTransaction().commit();
但是报错。理了理思路,是在调用session.get方法的时候,Product的配置文件里的factory属性对应的字段不存在。
即不存在product.factoryid这个字段。但是已经设置了product.factory字段的外键是factory.factoryid。这里需要怎么解决呢?
求帮助!
解决方案1: 配置没问题,关键是你的表建对没有。
Product表中是否有factory_id这一列。
解决方案2: 只要你配置好了,这样写是不会出错的。你理了理之后的思路是不对的,关联映射是根据配置决定的,session.get本身就是立即加载,不存在有没有的问题。你把实体的Integer改成int试试,代码这样:
Product product = (Product)session.get(Product.class,1);
以上介绍了“ Hibernate多对一单向关联问题,求助~”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2073628.html