java - Spring Data JPA / Hibernate - @Repository 中的 findByY(String y) 方法,其中 Y 可通过对象 X 访问
问题描述
我有一个用户存储库:
@Repository
public interface UserRepository extends JpaRepository<User, Long>
{
}
用户:
@Entity
@Table(name = 'user')
public class User
{
@Id
private Long id;
@OneToOne(mappedBy = "owner", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private UserDetails userDetails;
}
和用户详细信息:
@Entity
@Table(name = 'user_details')
public class UserDetails
{
@Id
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@MapsId
private User owner;
private String name;
}
包、导入、getter 和 setter 被排除在更简洁的代码之外。
现在,我怎样才能通过他们的名字找到用户?将此添加到 UserRepository 接口将不起作用:
List<User> findByName(String name);
因为它抛出:
No property name found for type User
我正在寻找这样的东西:
List<User> findByNameOfUserDetails(String name);
解决方案
请在此处查看 Spring Data JPA 文档。
你需要类似的东西findByUserDetailsName(String name)
。要解决这种歧义,您可以_
在方法名称中使用手动定义遍历点。所以我们的方法名是findByUserDetails_Name(String name)
.
推荐阅读
- javascript - /update_item/ 处的 JSONDecodeError 预期值:第 1 行第 1 列(字符 0)
- excel - 在 Excel 中编辑文本:在单元格中的每个单词前粘贴“-”
- matplotlib - 如何更改 matplotlib pcolor colobar 刻度字体大小?
- r - 当我已经知道所有系数时,如何求解 R 中的线性方程?
- database - 使用 DB Browser for SQLite 的转储命令问题
- sql - 用于更新具有相同 ID 的实体的 SQL 代码
- laravel - 在 Laravel 8 中发送没有环境变量的电子邮件
- docker - 未创建 Docker LLB 定义 - 未找到目标阶段开发
- wordpress - 如何从 QR 码 URL 触发电子邮件?
- c++ - Visual Studio 2019:自动缩进