我需要將2個表連接到一個具有某些條件的對象。我有以下幾點:通過jpa加入一個java對象中的兩個表
@Entity
@Table(name = "polling")
public class Polling extends DomainIdObject {
@ManyToOne
@JoinColumn(name = "owner_id")
private Person owner;
@Column(name = "poll_name")
private String name;
@Column(name = "description")
private String description;
@ManyToMany(targetEntity = PollingSchedule.class, mappedBy = "polling", fetch = FetchType.EAGER)
private List<PollingSchedule> variants;
@Column(name = "start_time")
private LocalDateTime startTime;
@Column(name = "end_time")
private LocalDateTime endTime;
//getters and setters
@Entity
@Table(name = "polling_schedule")
public class PollingSchedule extends DomainIdObject {
@JoinColumn(name = "polling_id")
private Polling polling;
@Column(name = "poll_var")
private String pollingVariant;
//gettters and setters
但是當我執行下面的代碼:
Query query = getEntityManager().createNativeQuery("SELECT * FROM polling p WHERE p.id=1", Polling.class);
List list = query.getResultList();
List<PollingSchedule> variants = ((Polling) list.get(0)).getVariants();
變種列表是空的。在數據庫表看起來如下:
polling
|id|owner_id|poll_name|description|start_time|end_time|
polling_schedule
|id|polling_id|poll_var|
所以,結果我想要的投票對象僅包含那些PollingVariants,那些在polling_schedule表相應polling_id。
我試過使用Filter,SecondaryTable註解,但它不適合我(或者我錯誤地使用它)。
我使用hibernate4和spring引導1.5.1
任何人都可以幫助我嗎?
你可以使用JPQL查詢,而不是本機查詢以避免在第三行醜陋的鑄造。 – Deltharis