我有两个实体对象,它们之间有一对多关联。
让我们打电话给他们" One"和"很多"。我将抓取设置为"懒惰"。
所以当我拥有"很多"对象,并尝试获得" One"对象Hibernate在内部获取了完整的对象。虽然它可以仅仅基于实体和#34;许多"因为它将包含" One"的id。 ID" One"是主键,是"很多"
中的外键many.getOne().getId() //fetches complete "One" object
是否可能以及如何?
答案 0 :(得分:4)
当然可以。您可以使用FetchType.LAZY
并通过这种方式获得id
:
LazyInitializer initializer = ((HibernateProxy) many.getOne()).getHibernateLazyInitializer();
Long id = (Long) initializer.getIdentifier();
它只适用于外键关联,而不适用于连接表关联。
或者您可以将HQL或条件与投影一起使用,以获得id
。
答案 1 :(得分:2)
您应编写HQL查询并仅选择ID。