lev*_*ied 2 java spring spring-data spring-data-jpa
假设我有两个实体:
class User {
@Id private int id;
private String name;
private int addressId;
}
class Address {
@Id private int id;
private String street;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点:
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);
}
Run Code Online (Sandbox Code Playgroud)
也就是说:接受一个实体(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}")
Run Code Online (Sandbox Code Playgroud)
奖励 - 对于a.street in(...),使用集合投影:
那是:
+ "where a.street in(:#{#address.![street]})")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |