我有两个实体,一个用户和一个注册用户。
注册用户有一个用户类型的字段。我想在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/