簡體   English   中英

Spring Data JPA 原生 @Query,整個實體命名為 @Param

[英]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(...) ,使用集合投影:

https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html#expressions-collection-projection

那是:

+ "where a.street in(:#{#address.![street]})")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM