J'ai deux entités avec relation entre elles.comment accéder aux sous-propriétés avec jpa metamodel dans où clause
public class Client implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
@NotNull
@Size(min = 3, max = 25)
private String firstName;
@NotNull
@Size(min = 3, max = 25)
private String lastName;
private String login;
private String password;
@OneToMany(mappedBy = "client")
private List<Project> projects;
}
et
public class Project implements Serializable {
private static final long serialVersionUID = 4762714047114442539L;
@Id
@GeneratedValue
private Integer id;
private String name;
@Temporal(TemporalType.TIMESTAMP)
private Date startDate;
@ManyToOne
@JoinColumn
private Client client;
}
Je veux fait une requête en utilisant l'API de jpametamodel et critères. Comme ceci:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Project> q = cb.createQuery(Project.class);
Root<Project> projects = q.from(Project.class);
q.where(cb.equal(projects.get(Project_.client), clientId));
problème pour moi que je ne sais pas comment obtenir l'accès à « id » propriété du client dans cette chaîne:
q.where(cb.equal(projects.get(Project_.client), clientId));
je veux obtenir quelque chose comme
q.where(cb.equal(projects.get("client.id"), clientId));
mais avec jpametamodel. C'est possible? :)
Ok la chaîne: Q.Où (cb.equal (projects.get ("client.id"), clientId)); conduire à une erreur. Et maintenant je sais que la chaîne: q.where (cb.equal (projects.get (Project_.client), clientId)); faites exactement ce que je veux. (Faire une restriction sur l'identifiant du client) Mais maintenant je veux savoir comment faire des références de chaîne sur les sous-propriétés en utilisant jpametamodel. – Pavel