Java Hibernate继承注释说明

Java Hibernate继承注释说明,java,hibernate,Java,Hibernate,在我们的遗留代码中,我偶然发现了一个hibernate类实现,我无法完全理解它 有一个超级类对应于表工作\u请求\u组- @Entity @Table(name="WORK_REQUEST_GROUPS") @Inheritance(strategy=InheritanceType.JOINED) public class CCSRequestGroup { @Id @GeneratedValue(strategy=GenerationType.AUTO)

在我们的遗留代码中,我偶然发现了一个hibernate类实现,我无法完全理解它

有一个超级类对应于表工作\u请求\u组-

@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_候选者-

@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();
List requests=session.createQuery(“来自CCSRequestGroup requestGroup,其中requestGroup.condition=\'waitingstarttime\'order by RAND()”).List();
这可能是在试图找出当前Hibernate会话中所有条件为'WaitingStartTime'的CCSRequestGroup

让我头疼的是,“条件”是CCSReleaseCandicates的成员,而不是CCSRequestGroup,那么我们如何才能成功地获得CCSRequestGroup实例的条件成员


有人能帮帮我吗?

我想,如果打开SQL日志记录,您会看到,您认为简单的语句实际上是在幕后与子类表进行外部联接。这就是为什么Hibernate可以使用数据,HQL本身可能利用隐式多态性向您返回正确的结果。

我想,如果打开SQL日志记录,您会看到,您认为简单的语句实际上是在幕后与子类表进行外部连接。这就是为什么Hibernate可以使用数据,HQL本身可能利用隐式多态性向您返回正确的结果。

为了赢得声誉,让别人回答您的问题,接受您问题的正确答案。为了赢得声誉,让别人回答您的问题,接受你问题的正确答案。