在hibernate查询上执行list方法时,我得到一个NullPointerException。这是我的代码:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
String hql = "SELECT g FROM DeviceGroup g JOIN FETCH g.devices";
Query query = session.createQuery(hql);
List<DeviceGroup> list = query.list();
session.getTransaction().commit();
session.close();
return list;
这种关系定义如下:
设备:
@ManyToOne
@JoinColumn
private DeviceGroup deviceGroup;
DeviceGroup:
@OneToMany(mappedBy = "deviceGroup")
private Set<Device> devices;
如果我省略了fetch join,则list方法会成功,但是延迟提取会导致StackOverflowException。我做错了什么?
答案 0 :(得分:1)
尝试identifier d
上的g.devices
,
SELECT g FROM DeviceGroup g JOIN FETCH g.devices d
答案 1 :(得分:1)
我解决了这个问题。我在导致无限循环的实体上有一个hashCode实现。在这种情况下抛出NullPointerException仍然是一个奇怪的行为......