Hibernate 连接期间子属性的Spring数据JPA@EntityGraph
我想从子实体查询父实体(以及EntityGraph中指定的映射实体) 用户实体:Hibernate 连接期间子属性的Spring数据JPA@EntityGraph,hibernate,spring-boot,spring-data-jpa,Hibernate,Spring Boot,Spring Data Jpa,我想从子实体查询父实体(以及EntityGraph中指定的映射实体) 用户实体: public class User{ private Long userId; //other fields private Set<UserRoleOrganization> userRoleOrganizations; //Setters and getters } 我确实喜欢以下内容: @EntityGraph(attributePaths = { "userR
public class User{
private Long userId;
//other fields
private Set<UserRoleOrganization> userRoleOrganizations;
//Setters and getters
}
我确实喜欢以下内容:
@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.添加另一方关系:
- 在用户中添加UserToken实体关系
public class User{ @OneToOne(mappedBy='user') private UserToken uToken; //other fields //Setters and getters }
- 您只需要从用户端编写查询
@EntityGraph(attributePaths = { "userRoleOrganizations" }) @Query("Select t From User t Where t.uToken.userToken = :accessToken") User findDetailedUserByUserToken(@Param("accessToken") String accessToken);
@EntityGraph(attributePaths = { "userRoleOrganizations" })
@Query("Select t From User t Where t.uToken.userToken = :accessToken")
User findDetailedUserByUserToken(@Param("accessToken") String accessToken);