当前位置: 首页 > 知识库问答 >
问题:

@jointable可以使用导入键而不是主键

雷锋
2023-03-14
public class XRequest {
  @ManyToOne
  @JoinTable(
    name = "RequestBatch",
    joinColumns = @JoinColumn(name = "requestBatchID", referencedColumnName="requestBatchID"),
    inverseJoinColumns = @JoinColumn(name = "requestVersionID")
  )
  private Requestversion requestversion;
}

指定:这就是表的样子。

XRequest (
requestId int (primary)
requestBatchId int (imported key from RequestBatch)
)

RequestBatch (
requestBatchId int (primary)
requestVersionId int 
)

RequestVersion (
requestVersionId int (primary)
)

希望得到的结果是由Hibernate为我构建的SQL查询:

select xr, rv 
from XRequest xr
left outer join RequestBatch rb on rb.requestBatchId = xr.requestBatchId 
inner join RequestVersion rv on rb.requestVersionId = rv.requestVersionId

共有1个答案

司马弘益
2023-03-14

如果您阅读了@Jointable上的JPA文档,您将看到joinColumns和inverseJoinColumns的描述提到:

引用实体的主表的联接表的外键列...

我想这就足以理解制约因素了。

 类似资料:
  • 问题内容: 如果不需要主键,是否不应该将主键添加到数据库中? 问题答案: 主键唯一地标识表中的一行。 它被索引和/或群集的事实是一个物理实现问题,与逻辑设计无关。 您需要一张桌子才能使它有意义。

  • 我正在用Python开发一个包。我使用虚拟环境。我在我的虚拟环境中的. pth路径中设置了模块的根路径,这样我就可以在开发代码和进行测试的同时导入包的模块(问题1:这是一个好方法吗?)。这工作正常(这里有一个例子,这是我想要的行为): 但是,如果我尝试使用PyTest,则会收到一些导入错误消息: 我有点困惑,看起来这表明了一个导入错误,但是Python做得很好,那么为什么PyTest会有问题呢?对

  • 从这个问题,有可能注入map与枚举? 例如,我有枚举: 我有一些与实现的接口: 但这样的注入不起作用: 我想自动注入。如何修复它,在spring框架端生成这样的代码?

  • 问题内容: 我有一个用于存储优惠券/折扣的表,并且我想将coupon_code列用作主键,即。 我的理由是,每个优惠券都将具有唯一的代码,而我将要运行的唯一命令是 我不会进行任何联接或索引编制,并且我看不到该表中有超过几百个条目。 在我看来,这可以,但是我不知道是否有任何我想念的东西。 问题答案: 从某种意义上说,您当然可以,您的RDBMS将允许您这样做。这个问题的答案,你是否没有问题 应该 做到

  • 我的配置是:Wildfly8.2.0,Weld 是否可以在CDI中注入bean而不是在其接口中注入?

  • 问题内容: 如果我有一个主键say,并且我对该键进行了简单的查询,例如, 它会找到一行然后停止查找,因为它是主键,还是最好告诉mysql通过使用它来限制它的选择?例如: 问题答案: 使用“ IMIT 1”是否可以加快对主键的查询? 不。它已经没有了就快了。无论如何有效地暗示。 它会找到一行然后停止查找,因为它是主键 是的。 这里根本不需要表扫描:这是基于键的查找。找到匹配的行,到此过程结束。