Ste*_* K. 5 spring spring-data spring-data-jpa
我想知道是否可以使用springs的查询方法指定特定的子类型。
例如,如果有一个MailUser和ChatUser,两个都extend User带有InheritanceType.SINGLE_TABLE-我可以找到所有MailUser带有的s PersonRepository吗?
或者在多个类的情况下,我可以找到User不包括所有的所有MailUsers extend User吗?
public interface PersonRepository extends Repository<User, Long> {
List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);
...
}
Run Code Online (Sandbox Code Playgroud)
您无法通过基于方法名称的自动查询创建来完成此操作,Spring Data 不支持它(请参阅此处了解支持的表达式)。但是,您可以手动@Query指定 JPQL 查询,并使用TYPE(entity)子句中的运算符WHERE来缩小范围到特定的实体类型。请参阅JPA 规范 4.6.17.5 实体类型表达式:
实体类型表达式可用于限制查询多态性。该
TYPE运算符返回参数的确切类型。[...]
例子:
Run Code Online (Sandbox Code Playgroud)SELECT e FROM Employee e WHERE TYPE(e) IN (Exempt, Contractor) SELECT e FROM Employee e WHERE TYPE(e) IN (:empType1, :empType2) SELECT e FROM Employee e WHERE TYPE(e) IN :empTypes SELECT TYPE(e) FROM Employee e WHERE TYPE(e) <> Exempt
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |