我有2类类似于此:
public class A {
@Id @GeneratedValue
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id")
B b;
...
}
public class B {
@Id @GeneratedValue
private long id;
...
}
我想使用API进行一个查询,查询A
表,但是对于将来的查询,拥有b多对一关系的id
是很重要的。
到目前为止我发现我可以用
var root = query.from(A.class);
root.fetch(A_.b);
...
当我查看这产生的底层SQL时,这将导致B
的所有基本属性都被获取。
我所寻求的是(不依赖于HQL)做一些类似的事情
var root = query.from(A.class);
root.join(A_.b).fetchBasicAttribute(B_.id);
...
导致A
的示例链接到B
的示例,其中只填充了id
。(理想情况下,我还希望能够指定B的其他属性)
这可能吗?
1条答案
按热度按时间ruoxqz4g1#
这在Hibernate中是不可能实现的,注意主键即
id
属性是外键列引用的属性,所以你不需要获取该属性,它会被自动创建的代理对象填充。