使用Hibernate FETCH JOIN的NullPointerException

时间:2014-08-18 15:19:56

标签: java mysql sql hibernate

在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。我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试identifier d上的g.devices

SELECT g FROM DeviceGroup g JOIN FETCH g.devices d

答案 1 :(得分:1)

我解决了这个问题。我在导致无限循环的实体上有一个hashCode实现。在这种情况下抛出NullPointerException仍然是一个奇怪的行为......