当前位置: 代码迷 >> Java Web开发 >> Hibernate多对一单向关联有关问题,
  详细解决方案

Hibernate多对一单向关联有关问题,

热度:231   发布时间:2016-04-16 21:58:46.0
Hibernate多对一单向关联问题,求助~
本帖最后由 wanghaoxyq 于 2014-08-26 13:21:08 编辑
项目里面有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的映射如下:
<many-to-one name="factory" class="com.wh.factory.Factory">
<column name="factoryid"/>
</many-to-one>

在使用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。这里需要怎么解决呢?
求帮助!
------解决方案--------------------
只要你配置好了,这样写是不会出错的。你理了理之后的思路是不对的,关联映射是根据配置决定的,session.get本身就是立即加载,不存在有没有的问题。你把实体的Integer改成int试试,代码这样:
 Product product = (Product)session.get(Product.class,1);
------解决方案--------------------
配置没问题,关键是你的表建对没有。
Product表中是否有factory_id这一列。
  相关解决方案