1
我有一個名爲Project的實體。HQL:幫助執行加入
public class Project {
@EmbeddedId
private ProjectID id;
@Column(name="updated_at")
private Date updatedAt;
@Column(name="sys_updated_at")
private Date sysUpdatedAt;
@OneToOne(optional=true, mappedBy="project", fetch=FetchType.EAGER)
private SysProject sysProject;
}
正如你可以看到它與「SysProject」一對一關係
public class SysProject extends BaseSysEntity implements Serializable {
@OneToOne(optional=true, fetch= FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="sysClientId", referencedColumnName="sysClientId"),
@JoinColumn(name="pProject", referencedColumnName="pProject")
})
private Project project;
@Column(name="sysupdate")
private Date sysupdate;
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
}
現在我想寫一個HQL查詢滿足兩個條件。
1)SysProject爲空的所有項目。
2)所有的項目,該項目具有SysProject但Project.updatedAt!= SysProject.sysupdate
我已經寫了下面的查詢,但它只返回滿足點項目(2)
SELECT p FROM Project p WHERE (NOT EXISTS (SELECT s FROM p.sysProject s)) OR (p.sysProject.id IS NOT NULL AND p.sysProject.sysupdate != p.updatedAt)
當我刪除以下部分來自查詢它滿足點(1):
(p.sysProject.id IS NOT NULL和p.sysProject.sysupdate = p.updatedAt!)
對於您的信息「從項目WHERE sysProject IS NULL」從不工作時,有一對一的映射。 –