Данные Spring JPA @EntityGraph для дочерних атрибутов во время JOIN - PullRequest
0 голосов
/ 02 сентября 2018

Я хочу запросить родительскую сущность (а также сопоставленные сущности, указанные в EntityGraph) от дочерней сущности.

Пользователь:

public class User{
    private Long userId;
    //other fields
    private Set<UserRoleOrganization> userRoleOrganizations;

    //Setters and getters
}

UserToken Entity:

public class UserToken{
    private Long userTokenId;
    @OneToOne
    @JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false)
    private User user;

    @Column(name = "user_token", length = 100, unique = true)
    @NotNull
    private String userToken;

}

Мне понравилось как ниже:

@EntityGraph(attributePaths = { "userRoleOrganizations" })
@Query("Select t.user From UserToken t Where t.userToken = :accessToken")
User findDetailedUserByUserToken(@Param("accessToken") String accessToken);

Но я получил исключение, как показано ниже:

Caused by: org.hibernate.QueryException: could not resolve property: userRoleOrganizations of: com.dao.domain.security.UserToken

Как решить эту проблему?

1 Ответ

0 голосов
/ 02 сентября 2018

Я предлагаю вам также добавить отношение один-к-одному из сущности пользователя. таким образом, вы можете написать запрос со стороны пользователя. вот изменения:

1. Добавить еще одно соотношение сторон:

  • Добавить отношение пользователя UserTokenShip в пользователь

    public class User{
        @OneToOne(mappedBy='user')
        private UserToken uToken;
        //other fields
        //Setters and getters
    }
    

2. Перепишите ваш запрос:

  • Ваш запрос должен быть написан только со стороны пользователя

     @EntityGraph(attributePaths = { "userRoleOrganizations" })
     @Query("Select t From User t Where t.uToken.userToken = :accessToken")
     User findDetailedUserByUserToken(@Param("accessToken") String accessToken);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...