0

私はそれらの間に関係がある2つのエンティティを持っています。

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と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));

この文字列でクライアントの「id」プロパティにアクセスする方法がわからないという問題があります。

q.where(cb.equal(projects.get(Project_.client), clientId));

私は次のようなものを手に入れたい

q.where(cb.equal(projects.get("client.id"), clientId));

しかし、jpametamodelを使用します。可能です?:)

4

1 に答える 1

3

このようなことを試しましたか?

projects.get(Project_.client).get(Client_.id);
于 2013-01-21T11:46:02.633 に答える