来自许多表的CriteriaBuilder构造结果

时间:2019-06-13 13:47:27

标签: java spring hibernate

我使用javax.persistence.criteria.CriteriaBuilder创建查询。如果在样本中我未指定一个字段,则会形成其他请求。我该如何解决这个问题?

Some{
  final Long id;
  final String name;
  final String code;
}
criteriaQuery = criteriaQuery.select(
  criteriaBuilder.construct(
    Some.class,
    ((Path) someJoin.get(SomeClass1_.ID)), // TYPE: LONG
    ((Path) someJoin.get(SomeClass1_.NAME)), // TYPE: STRING
    ((Path) someJoin.get(SomeClass2_.CODE)), // TYPE: STRING
  )
)

如果我调用执行查询,我将在日志中看到一个SQL查询

Some{
  final SomeClass1 someClass1;
  final String code;
}
criteriaQuery = criteriaQuery.select(
  criteriaBuilder.construct(
    Some.class,
    someJoin.get(SomeClassN_.SOME_CLASS1)), // TYPE: MY CUSTOME TYPE
    ((Path) someJoin.get(SomeClass2_.CODE)), // TYPE: STRING
  )
)

如果我现在调用执行查询,我将在日志中看到两个sql查询。第二个查询是通过ID获取SOME_CLASS1

我正在使用Hibernate提供程序。 我希望我的criteriaQuery只执行一个sql查询。

谢谢

0 个答案:

没有答案