use*_*970 1 java spring hibernate jpa spring-boot
我是 JPA 存储库实施的新手,因此寻求帮助。获取具有列值条件的表项的普通 SQL 查询将是:
select * from table t where t.column in('firstvalue','secondvalue','thirdvalue')
Run Code Online (Sandbox Code Playgroud)
是否有任何 JPA/CRUD 存储库等效于此?
对于多对一关系。
子查询将是:
select * from child_foo where foo_id in(select foo_id from foo where foo_other_value="somevalue")
Run Code Online (Sandbox Code Playgroud)
hibernate 的实现是
select * from child_foo where child_foo.foo.foo_othervalue:"somevalue"
Run Code Online (Sandbox Code Playgroud)
我想知道这些查询的 JPA 等价物是什么(在 Spring Boot 中实现)
Spring 为您提供了两种在存储库中定义查询的方法。
例如对于您的查询:
select * from table t where t.column in('firstvalue','secondvalue','thirdvalue')
你可以使用:
查询方式
List<User> findAllByNameIn(List<String> names)
Run Code Online (Sandbox Code Playgroud)
这是支持的关键字列表
命名查询:
@Query("select u from User u where u.name in :names")
List<User> findUsersByName(List<String> names)
Run Code Online (Sandbox Code Playgroud)
原生 SQL
@Query(nativeQuery = true, value="SELECT * FROM USER WHERE NAME in ?0")
List<User> findUsersByName(List<String> names)
Run Code Online (Sandbox Code Playgroud)
对于一对多映射,您可以使用注释@OneToMany。这是有关其工作原理的指南
| 归档时间: |
|
| 查看次数: |
8271 次 |
| 最近记录: |