我想知道是否可以使用弹簧来指定特定的子类型。 query methods。
例如,如果有MailUser
和ChatUser
extend User
InheritanceType.SINGLE_TABLE
- 我可以找到MailUser
的所有PersonRepository
}}?
或者,我可以在多个班级User
的情况下找到排除所有MailUser
的所有extend User
吗?
public interface PersonRepository extends Repository<User, Long> {
List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);
...
}
答案 0 :(得分:2)
您无法使用基于方法名称的自动查询创建,Spring Data不支持它(有关受支持的表达式,请参阅here)。但是,您可以use @Query
手动指定JPQL查询,并使用TYPE(entity)
子句中的WHERE
运算符缩小到特定实体类型。请参阅JPA spec 4.6.17.5实体类型表达式:
实体类型表达式可用于限制查询多态性。
TYPE
运算符返回参数的确切类型。[...]
示例:
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