gpt4 book ai didi

java - Spring Data JPA 原生 @Query,整个实体名为 @Param

转载 作者:行者123 更新时间:2023-12-02 09:08:55 26 4
gpt4 key购买 nike

假设我有两个实体:

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)作为参数,但在 native 中引用其属性之一(在本例中为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]})")

关于java - Spring Data JPA 原生 @Query,整个实体名为 @Param,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59570294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com