我使用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查询。
谢谢