0
我有兩個實體,一個是事件,另一個是用戶。用戶可以喜歡活動,因此它有一個喜歡的活動列表(記錄在一個聯合表格中)。我想使用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,你的意思是一個JPQL查詢嗎?但它不是類型安全的。我想要的是使用JPA 2.0提供的Criteria API。 – John
但我確實希望使用Criteria API來與我的其他代碼保持一致。那麼你可以給我看一個示例代碼嗎?謝謝。 – John
此頁面的下半部分http://www.objectdb.com/java/jpa/query/jpql/select會講述如何創建Criteria查詢的全部內容。您只需要將上面給出的查詢(或您喜歡的其中一個)轉換爲標準查詢。 – digitaljoel