我有一个 UserRepository:
@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 接口(interface)将不起作用:
List<User> findByName(String name);
因为它抛出:
No property name found for type User
我正在寻找这样的东西:
List<User> findByNameOfUserDetails(String name);
最佳答案
请查看 Spring Data JPA 文档 here .
您需要类似findByUserDetailsName(String name)
的内容。
要解决这种歧义,您可以在方法名称中使用 _
来手动定义遍历点。因此我们的方法名称将是 findByUserDetails_Name(String name)
。
关于java - Spring Data JPA/Hibernate - @Repository 中的 findByY(String y) 方法,其中 Y 可通过对象 X 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455562/