在我們的遺留代碼中,我偶然發現了一個我無法完全理解的hibernate類實現。Hibernate繼承註釋說明
有對應表WORK_REQUEST_GROUPS一個超類 -
@Entity
@Table(name="WORK_REQUEST_GROUPS")
@Inheritance(strategy=InheritanceType.JOINED)
public class CCSRequestGroup
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="REQUEST_GROUP_ID")
private Long groupId;
....
}
然後我們有對應表RELEASE_CANDIDATES一個子類 -
@Entity
@Table(name="RELEASE_CANDIDATES")
@PrimaryKeyJoinColumn(name="RELEASE_CANDIDATE_ID")
public class CCSReleaseCandidate extends CCSRequestGroup {
@ManyToOne
@JoinColumn(name="GROUP_CONDITION_CODE")
private CCSRequestGroupCondition condition;
....
}
根據我的理解它指出CCSReleaseCandidates是子類的CCSRequestGroup,並加入RELEASE_CANDIDATES_ID列。
現在我們有一個方法,我們嘗試找出CCSRequestGroup的情況下,一些標準 -
List<CCSRequestGroup> requests = session.createQuery("from CCSRequestGroup requestGroup where requestGroup.condition = \'AwaitingStartTime\' order by RAND()").list();
這可能是試圖找出其中有自己的病情目前的Hibernate會話的所有CCSRequestGroups ='AwaitingStartTime'。
這裏吃什麼我的大腦是'condition'是CCSReleaseCandidates而不是CCSRequestGroup的成員,那麼我們如何能夠成功地獲得CCSRequestGroup實例的條件成員。
有人可以幫我嗎?
爲了贏得聲望,並讓其他人回答你的問題,接受你的問題的良好答案。 – 2010-11-24 14:44:53