Hibernate:一对多getId()不获取竞争对象

时间:2016-06-24 09:57:24

标签: java mysql hibernate

我有两个实体对象,它们之间有一对多关联。

让我们打电话给他们" One"和"很多"。我将抓取设置为"懒惰"。

所以当我拥有"很多"对象,并尝试获得" One"对象Hibernate在内部获取了完整的对象。虽然它可以仅仅基于实体和#34;许多"因为它将包含" One"的id。 ID" One"是主键,是"很多"

中的外键
many.getOne().getId() //fetches complete "One" object

是否可能以及如何?

2 个答案:

答案 0 :(得分:4)

当然可以。您可以使用FetchType.LAZY并通过这种方式获得id

LazyInitializer initializer = ((HibernateProxy) many.getOne()).getHibernateLazyInitializer();
Long id = (Long) initializer.getIdentifier();

它只适用于外键关联,而不适用于连接表关联。

或者您可以将HQL或条件与投影一起使用,以获得id

答案 1 :(得分:2)

您应编写HQL查询并仅选择ID。