Select avec les criteria sur deux tables reliées en ManyToOne
Bonjour,
N'ayant pas trouvé la solution à mon problème, je me tourne vers vous.
Donc voici pour commencer les 2 POJO :
AsCustomer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
@Entity
@Table(name = "as_customer")
public class AsCustomer implements java.io.Serializable {
@Id
@GeneratedValue
@Column(name = "id", unique = true, nullable = false)
private int id;
@Column(name = "name", nullable = false)
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@LazyToOne(LazyToOneOption.FALSE)
@JoinColumn(name = "city")
private GeoCity city;
// ... getter / setter |
GeoCity
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
@Entity
@Table(name = "geo_city")
public class GeoCity implements java.io.Serializable {
@Id
@GeneratedValue
@Column(name = "id", unique = true, nullable = false)
private int id;
@Column(name = "zip", length = 15, columnDefinition = "char")
private String zip;
@Column(name = "label", length = 120, columnDefinition = "Lvarchar")
private String label; |
J'ai besoin de créer une requête qui récupère la liste des AsCustomer en filtrant sur le nom (name) et sur le label du POJO GeoCity
Voici ce que j'ai écrit mais qui ne fonctionne pas :
Code:
1 2 3 4 5 6 7 8 9 10
|
Criteria criteria = session.createCriteria(AsCustomer.class);
criteria.add(
Restrictions.or(
Restrictions.or(
Restrictions.ilike("name", "%" + query + "%"),
Restrictions.ilike("city.label", query + "%")
)
)
); |
Hibernate lance une exception comme quoi il ne peut pas exécuter la requête ...
Est ce que quelqu'un peut me donner une piste ?
Si vous avez besoin de plus d'information je reste dispo.
Merci d'avance.