Spring Data JPA查询按字段生成

时间:2016-01-12 09:09:28

标签: java spring jpa spring-data

我在ProjectRepository中有一个看起来像这样的方法:

java.util.List

这将列出引用特定用户的所有项目。由于其他要求,我现在需要从Project中引用User,而不仅仅是userID,如下所示:

findByUserID(int userID);

以前只是:

@ManyToOne
@JoinColumn(name = "userID", referencedColumnName = "userID")
private User user;

所以我用以下方法替换了方法:

int userID;

但是这需要额外调用数据库来获取给定userID的User对象。有没有办法在我的新班级中使用第一种方法?如果我保留第一种方法,我会得到一个

findByUser(User user);

这可以不编写自定义查询吗?

2 个答案:

答案 0 :(得分:3)

假设User类包含定义为:

python-yaml

并且Project类中有一个User对象,如下所示:

public class User {
    private int userId;

    public User(int userId) {
        this.userId = userId;
    }
    //getters setters ommitted
}

根据文档,它应该能够在存储库中编写一个自定义查询,通过编写

访问嵌套属性,如project.user.userId
public class Project {
    private User user;

    public Project() {
    }
    //rest ommitted
}

或至少是我从阅读文档中了解到的here

答案 1 :(得分:0)

尝试使用@PrimaryKeyJoinColumn注释。