java - Spring数据存储库的方法通过字段的字段查找

标签 java spring hibernate spring-repositories

我有两个实体,一个用户和一个注册用户。

注册用户有一个用户类型的字段。我想在spring数据存储库中有一个与这个注册用户实体相关的方法,通过连接到注册用户的用户名搜索所有注册用户。

因此,这是具有关联用户字段的注册用户实体:

@Entity
public class RegisteredUser implements Serializable {

    ... 
    @OneToOne
    @JoinColumn(name = "USERNAME_FK")
    private User user;
    ...
}

这是一个有用户名的用户:

@Entity
public class User implements Serializable { 
    ...
    @Id
    @Column(nullable = false)
    protected String username;
    ...
}

最佳答案

Spring Data(至少 1.12.x 版本)使用 PropertyPath#from方法来提取从方法名称构造的谓词的属性的路径。根据sources它使用下划线作为“字段分隔符”。所以第一个变体如下

public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> {
    List<RegisteredUser> findRegisteredUserByUser_Username(String username);
}

如果没有找到整个字段名称,还有一些代码将大写字符视为字段分隔符。因此,如果您在 RegisteredUser 中没有 userUsername 字段,则第二个变量是

public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> {
    List<RegisteredUser> findRegisteredUserByUserUsername(String username);
}

关于java - Spring数据存储库的方法通过字段的字段查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193901/

相关文章:

java - post查询的动态过滤条件

java - Spring MVC 试图通过 url 传递变量。 @Path变量

java - spring 3.2.6 最兼容的 hibernate 版本

mysql - 使用 Hibernate @SQLDelete 跨所有实体进行软删除

java - 如何在 Java8 中将 List<Map<String,Object>> 分组为 Map<String,List<Map<String,Object>>

java - getCharacterOffset() 返回错误值

java - 在 Java Swing 中将 JButton 覆盖在 JLabel 上?

spring - chalice 2.3。 0 和计划 tyrus

java - RequestMapping 无法填充实体类,其中 EmbeddedId 中的字段

java - Hibernate.initialize() 似乎不适用于延迟加载的集合