我有一个父类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 {
...
}
答案 0 :(得分:0)
每当我使用Criteria API时,它会在两者之间进行左外连接。
这确实是你在使用JOINED
策略时会得到的,Hibernate将在所有对应于继承树的给定节点的后代的表上执行外连接推导并返回给定行的实际类型(有关详细信息,请参阅ChssPly76的this great previous answer)。
换句话说,我不认为你可以强迫Hibernate使用内部联接,至少在不改变映射的情况下(使用辅助表或OneToOne
关系,我不确定你的约束是什么。)