我有一个用户和一个角色类:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OrderBy("name")
@ManyToMany(fetch=FetchType.EAGER)
private SortedSet<Role> roles;
}
@Entity
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
}
这将产生三个数据库表:
User
+ id
Role
+ id
+ name
User_Role
+ users_id
+ roles_id
现在我想通过JPQL查询用户并按角色名称对其排序:
SELECT u FROM User u ORDER BY u.roles ASC
我的数据库是MariaDB。遗憾的是,Hibernate生成以下本机无效查询:
select us0_.id as id2_2_ from User us0_ cross join User_Role roles1_, Role role2_ where us0_.id=roles1_.users_id and roles1_.roles_id=role2_.id order by . ASC
订购依据。ASC公司
显然不是有效的查询部分。我做错了什么?我还尝试了@OrderColumn和@org。冬眠注释。OrderBy运气不好。
谢谢