Java 返回元素列表时Namedquery不工作
我有两个表:用户和角色。用户使用多对多关系映射到角色。 我想要的是得到一个列的选择,包括角色中的列。因此,我创建了以下命名查询:Java 返回元素列表时Namedquery不工作,java,hibernate,jpa,Java,Hibernate,Jpa,我有两个表:用户和角色。用户使用多对多关系映射到角色。 我想要的是得到一个列的选择,包括角色中的列。因此,我创建了以下命名查询: SELECT u.username, u.password, u.salt, u.enabled, u.roles FROM User u WHERE u.username = :username 但是Hibernate无法编译,SQL日志如下所示: Hibernate: select user0_.username as col_0_0_, us
SELECT u.username, u.password, u.salt, u.enabled, u.roles FROM User u WHERE u.username = :username
但是Hibernate无法编译,SQL日志如下所示:
Hibernate:
select
user0_.username as col_0_0_,
user0_.password as col_1_0_,
user0_.salt as col_2_0_,
user0_.enabled as col_3_0_,
. as col_4_0_,
role2_.id as id42_,
role2_.friendly_name as friendly2_42_,
role2_.name as name42_
from
users user0_
inner join
users_roles roles1_
on user0_.id=roles1_.users_id
inner join
roles role2_
on roles1_.roles_id=role2_.id
where
user0_.username=?
吸引我的是。作为第4列第0列,
!它导致了问题,但是为什么hibernate会包括它,以及如何解决这个问题
非常感谢查询用户实例,并为其提供角色:
select distinct u from User u
left join fetch u.roles
where u.username = :username
或者使用返回标量的查询,但不能将集合af角色视为标量:
select u.username, u.password, u.salt, u.enabled, r.id, r.name
from User u
left join u.roles r
where u.username = :username
旁注:应该是userName
,而不是userName
,以遵守标准Java命名约定