0
我有两个实体之间存在关系。如何访问jpa元模型中的子属性where子句中的
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;
}
和
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;
}
我想用jpametamodel和标准的API做了一个查询。就像这样:
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));
问题对我来说,我不知道怎么去访问这个字符串客户的“ID”属性:
q.where(cb.equal(projects.get(Project_.client), clientId));
我想要得到的东西像
q.where(cb.equal(projects.get("client.id"), clientId));
但与jpametamodel。有可能的? :)
确定字符串: q.where(cb.equal(projects.get(“client.id”),clientId)); 导致错误。现在我知道字符串: q.where(cb.equal(projects.get(Project_.client),clientId)); 正是我想要的。 (限制客户端ID) 但现在我想知道如何使用jpametamodel对子属性执行链参考。 – Pavel