[英]Spring Data JPA Native Query - Named parameters are not being registered
[英]Spring Data JPA native @Query with whole entity as named @Param
假設我有兩個實體:
class User {
@Id private int id;
private String name;
private int addressId;
}
class Address {
@Id private int id;
private String street;
}
是否有可能做到這一點:
interface UserRepository extends CrudRepository<User, Integer> {
@Query(nativeQuery=true,
value=
"select * from user "
+ "inner join address a on a.id = u.addressId "
+ "where a.street = :address.street")
List<User> findByAddress(@Param("address") Address address);
}
即:接受一個實體(在本例中為Address
)作為參數,但在本機查詢中引用其屬性之一(在本例中為Address.street
)?
由於各種原因,我不能對這兩個實體使用“正常” @ManyToMany
和 JPA 查詢。
在這里找到了答案:
https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions
這可以用於:
+ "where a.street = :#{#address.street}")
獎勵 - 對於a.street in(...)
,使用集合投影:
那是:
+ "where a.street in(:#{#address.![street]})")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.