0
我有几个数据库表:Hibernate对象的映射问题
User (user_id, firstName, lastName)
和
Product (id, name, user_id)
user_id
在这里充当外键。
我有几个类如下。
public class User {
@Id
@Column(name = "user_id")
private int user_id;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
/*getters setter are omitted.*/
}
&另一个是
public class Product {
@Id
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "packing")
private int packing;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
public User getUser() {
return this.user;
}
public void setUser(User us) {
this.user = us;
}
/* other getters setter are omitted.*/
}
我ProductDao.java
类有此查询:
List<Product> list = new ArrayList<Product>();
Iterator<?> products = session.createQuery(" SELECT id, name, user FROM Product ") .list().iterator();
如果我从这个查询中删除user
,它工作得很好(但不取user
的用户详细信息)
请指点我失踪的地方,以获取具体的user
的所有细节。
谢谢你的帮助。它显示了所有来自'Product'但是'user'的数据。 我仍然无法获取'user'的数据。 – Zeeshan
原因可能是延迟加载。用户字段是否为null或者您是否获得Exception?您是否正在访问交易中的字段?您是否试图通过将注释更改为'FetchType.EAGER'或将'LEFT JOIN FETCH'添加到查询来急切地提取用户? – kostja
我正在调试中获取用户字段'null'。 是的,我也尝试过使用EAGER和LAZY。 我在调试模式下看到'user = null',但是当我打印对象(转换成JSON)时,它不显示'user'字段。 – Zeeshan