Spring数据存储库按字段查找的方法 [英] Spring data repository's method to find by the field of a field

查看:119
本文介绍了Spring数据存储库按字段查找的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've two entities, a user and a registered user.

注册用户具有用户类型的字段.我想在Spring数据库中与此注册用户实体相关的方法中,按连接到注册用户的用户名搜索所有注册用户.

A registered user has a field of type user. I would like to have a method in the spring data repository related to this registered user entity to search all registered users by the username of the user that is connected to the registered user.

这是具有相关用户字段的注册用户实体:

So, this is the registered user entity with an associated user field:

@Entity
public class RegisteredUser implements Serializable {

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

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

and this is a user with a username:

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

推荐答案

Spring Data(至少1.12.x版本)使用,它使用下划线作为字段分隔符".因此,第一个变体如下

Spring Data (at least 1.12.x version) uses PropertyPath#from method to extract path to a property for a predicate constructed from method name. According to sources it uses underscore as "field separator". So first variant is as follows

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

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

There is also code which treat an uppercase char as field separator if whole field name is not found. So if you don't have a userUsername field in RegisteredUser second varian is

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

这篇关于Spring数据存储库按字段查找的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆