У меня есть следующие два разных оператора HQL.
Моя структура данных выглядит так:
Пользователь
@Entity (name = "User")
public class User
{
@Id
@GeneratedValue
@Column (name = "id")
private int id;
@Column (name = "user_name")
private String username;
@Column (name = "password")
private String password;
@Column (name = "enabled")
private boolean enabled;
@ManyToMany (targetEntity = Role.class, cascade =
{
CascadeType.ALL
})
@JoinTable (name = "user_role", joinColumns =
{
@JoinColumn (name = "user_id")
}, inverseJoinColumns =
{
@JoinColumn (name = "role_id")
})
private Set<Role> roles;
/* getters and setters)
}
Короче говоря, единственная разница между двумя запросами заключается в том, что один из них — ASC, а другой — DESC.
@NamedQuery (name = "user.getUsersOrderByRoleAsc",
query = "FROM User as u left outer join u.roles roles WHERE u.username like :username ORDER BY roles.name ASC"),
@NamedQuery (name = "user.getUsersOrderByRoleDesc",
query = "FROM User as u left outer join u.roles roles WHERE u.username like :username ORDER BY roles.name DESC"),
Запрос для ASC возвращает: Список пользователей -> Как я и ожидал.
Запрос DESC возвращает: список объектов [], и в каждом объекте [0] — это пользователь, а [1] — просто еще один нулевой объект.
Это не имеет никакого смысла для меня. Как простая замена ASC на DESC может изменить структуру результирующего набора?
Я использую Hibernate 4.3.6.Final.