按外键值而不是左连接查询

时间:2017-11-10 08:32:46

标签: java oracle jpa spring-data

我在两个表之间有1-n关系(让我们称之为用户和角色):

User(ID, Name, LastName, ...)
Role(ID, User_ID, Label, ...) where User_ID is a foreign key to reference the User

在我的角色存储库中,我有一个这样的方法:

public List<Role> findByUser(User user);

生成的SQL具有以下形式:

select ... from Role r left outer join User u on u.ID = r.User_ID where u.ID = ?

这是一个性能瓶颈。如何使spring-data生成更简单的查询,如:

select ... from Role r where r.User_ID = ?

(摆脱无用的连接)

1 个答案:

答案 0 :(得分:0)

现在无法检查,但您可以尝试以下操作:

public List<Role> findByUser_ID(Long id);

public List<Role> findBy_User_ID(Long id);

它还可能依赖于JPA实现和映射。 ID应正确映射为主键,User_ID作为外键。 Role.user的延迟加载也可能会影响。