Proszę o pomoc w napisaniu zapytania, które pobrało by mi pierwszych 10 userów z bazy danych i posortowało ich w zależności od tego czy posiadają pliki, czy nie (może być według ilości posiadanych plików). Niżej podaję uproszczone klasy encji
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="ID")
private int id;
@Column(name="NAZWA")
private String nazwa;
//bi-directional many-to-one association to PlikiUsera
@OneToMany(mappedBy="user")
private Set<PlikiUsera> plikiUsera = new HashSet<PlikiUsera>();
//gerrery i settery
}
@Entity
@Table(name="PLIKI_USERA")
public class PlikiUsera implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="ID")
private int id;
@Column(name="DATA_PLIKU")
private Timestamp dataPliku;
@ManyToOne
@JoinColumn(name="ID_USE")
private User user;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ID_PL")
private Pliki pliki;
//gettery i settery
}
Próbowalem robić w taki sposób, ale niestety nie dziala:
SELECT u FROM User u LEFT OUTER JOIN u.plikiUsera pliki ORDER BY count(pliki)
Do ograniczenia ilości pobranych userów używam metod setFirstResult(first); i setMaxResults(pageSize);