java - Spring Data JPA/Hibernate - @Repository 中的 findByY(String y) 方法,其中 Y 可通过对象 X 访问

标签 java hibernate jpa spring-data-jpa repository

我有一个 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/

相关文章:

hibernate - 当我有@ManyToMany 时如何设置外键名称

java - 如何使用唯一列更新行

java - 使用 nextFloat() 时线程 "main"java.util.InputMismatchException 中出现异常

mysql - 如何从 hibernate 表中选择多条记录

Spring Data JPA 对嵌套集合进行排序

mysql - 如何在单个数据库事务中允许数据截断?

database - 使用多个数据库和 Liquibase 时的最佳 Hibernate 主键生成类型

java - 无法理解 java 中 HashMap 的清除方法的实现

java - 当随机数小于 100 时,如何使循环最后显示 "stop"

java - 当从@transactional公共(public)方法调用私有(private)方法时,私有(private)方法中会使用相同的事务还是不使用事务