在我们的遗留代码中,我偶然发现了一个我无法完全理解的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