私は2つのエンティティを1つはイベント、もう1つはユーザーです。ユーザーはイベントが好きなので、好きなイベントのリスト(ジョイントテーブルに記録されています)があります。私は、JPA 2.0を使ってタイプセーフなクエリを作成して、イベントIDを与えられたイベントが何人いるかを数えたいと思っています。誰もそれで私を助けることができますか?ありがとうございました。動的なタイプセーフなクエリを作成する
以下はエンティティのコードです。
@Entity
@Table(name = "events")
public class Event extends BaseEntity{
@Id
@Column(name = "event_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long eventId;
@Column(name = "title", length = 200)
protected String title;
//getter and setter....
}
@Entity
@Table(name = "user")
public class User{
@Id
@Column(name = "login", length = 64)
protected String login;
@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
@JoinTable(name = "user_events",
joinColumns = {@JoinColumn(name = "login")},
inverseJoinColumns = {@JoinColumn(name = "event_id")})
protected List<Event> events;
//getter and setters...
}
詳細を教えてください。 TypedQueryを作成するためにEntity Managerを使用する方法について話しましたが、JPQLクエリを意味しますか?しかし、タイプセーフではありません。私が望むのは、JPA 2.0が提供するCriteria APIを使用することです。 – John
しかし、Criteria APIを他のコードと一貫して使用したいと思います。だから、サンプルコードを私に見せてもらえますか?ありがとう。 – John
このページの下半分http://www.objectdb.com/java/jpa/query/jpql/selectでは、Criteriaクエリの作成方法について説明しています。上記のクエリ(またはそのようなクエリを作成するクエリ)を条件クエリに変換するだけで済みます。 – digitaljoel