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

标签 java hibernate orm inheritance inner-join

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

@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 {
...
}

最佳答案

Whenever I use the Criteria API it does a Left Outer Join between the two.

当使用 JOINED 策略时,这确实是您将获得的结果,Hibernate 将对所有 与给定继承节点的后代对应的表执行外部联接树以推断并返回给定行的实际类型(有关详细信息,请参见 ChssPly76 的 this great previous answer)。

换句话说,我认为您不能强制 Hibernate 使用内部联接,至少不能不更改映射(使用辅助表或 OneToOne 关系,我不确定你的约束到底是什么)。

相关问题

关于java - Hibernate - 强制父类和子类之间的内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163540/

相关文章:

java - 执行器 corepoolsize 为零,且 LinkedBlockingQueue 有限

java - hibernate "object references an unsaved transient instance"

php - Laravel:设置自定义主键值的方法

java - HQL hibernate 在 AT TIME ZONE 上出错

java - "org.hibernate.DuplicateMappingException"错误是什么意思?

c# - 任何与 MS-Access 一起工作的 ORM(用于原型(prototype)设计)?

ruby - 用于 Ruby 的 HBase ORM

Java:从 JAR 文件中的类文件中获取方法 stub 的简单方法?反射?

java - 如何使线程 - notify()/notifyAll() 私有(private)

java - JDBC 中的 Pl/sql %RowType