Hibernate - 强制父类和子类之间的内部联接

时间:2010-11-12 10:10:35

标签: java hibernate orm inheritance inner-join

我有一个父类Party和一个子类LiveParty以及其他(见下文),这在数据库中始终是一对一的关系。每当我使用Criteria API时,它都会在两者之间进行左外连接。我想强制父和子之间的内部联接,因为这会影响某些查询的性能,但是在文档中找不到这样做的方法,有人可以建议吗?

@Entity
@Table(name = "Party", schema = "dbo")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Party{
...
}

@Entity
@Table(name = "LiveParty", schema = "dbo")
@PrimaryKeyJoinColumn(name = "partyId")
public class LiveParty extends Party {
...
}

1 个答案:

答案 0 :(得分:0)

  

每当我使用Criteria API时,它会在两者之间进行左外连接。

这确实是你在使用JOINED策略时会得到的,Hibernate将在所有对应于继承树的给定节点的后代的表上执行外连接推导并返回给定行的实际类型(有关详细信息,请参阅ChssPly76的this great previous answer)。

换句话说,我不认为你可以强迫Hibernate使用内部联接,至少在不改变映射的情况下(使用辅助表或OneToOne关系,我不确定你的约束是什么。)

相关问题