如何在where子句中使用jpa元模型访问子属性
我有两个实体,它们之间的关系是如何在where子句中使用jpa元模型访问子属性,jpa,properties,criteria,metamodel,Jpa,Properties,Criteria,Metamodel,我有两个实体,它们之间的关系是 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) pr
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;
}
我想使用jpametamodel和CriteriaAPI进行查询。像这样:
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));
我想买点像这样的东西
q.where(cb.equal(projects.get("client.id"), clientId));
但是用jpametamodel。有可能吗?:) 试过这样的东西吗
projects.get(Project_.client).get(Client_.id);
试过这样的吗
projects.get(Project_.client).get(Client_.id);
确定字符串:q.where(cb.equal(projects.get(“client.id”),clientId));导致错误。现在我知道了字符串:q.where(cb.equal(projects.get(Project.client),clientId);做我想要的。(对客户机id进行限制),但现在我想知道如何使用jpametamodel.Ok字符串对子属性进行链引用:q.where(cb.equal(projects.get(“client.id”),clientId);导致错误。现在我知道了字符串:q.where(cb.equal(projects.get(Project.client),clientId);做我想要的。(对客户端id进行限制)但现在我想知道如何使用jpametamodel对子属性进行链引用。
projects.get(Project_.client).get(Client_.id);