【发布时间】:2017-01-12 14:32:42
【问题描述】:
我有规格:
final String text = "%text%";
final Specifications<PersonEntity> spec = Specifications.where(
(root, query, builder) -> builder.like(builder.lower(root.join(PersonEntity_.addresses, JoinType.LEFT).get(AddressEntity_.addressLine1)), text)
).or(
(root, query, builder) -> builder.like(builder.lower(root.join(PersonEntity_.addresses, JoinType.LEFT).get(AddressEntity_.addressLine2)), text)
).or(
(root, query, builder) -> builder.like(builder.lower(root.join(PersonEntity_.addresses, JoinType.LEFT).get(AddressEntity_.city)), text)
)
使用后:
personRepository.findAll(spec);
在日志中,我看到,JPA 创建了一个查询,它连接地址三次而不是一次。
如何编写一个地址将只连接一次的规范?
【问题讨论】: