Hibernate CriteriaAPI仅将多个非常特定的属性提取到一个相关实体

fxnxkyjh  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(138)

我有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的其他属性)
这可能吗?

ruoxqz4g

ruoxqz4g1#

这在Hibernate中是不可能实现的,注意主键即id属性是外键列引用的属性,所以你不需要获取该属性,它会被自动创建的代理对象填充。

相关问题