当前位置: 首页 > 面试题库 >

JPA规范是否允许引用非主键列?

曹自怡
2023-03-14
问题内容

JPA规范是否允许对非主键列的简单引用?

我想在引用中使用在Countrys表上有一个简单的替代/自然键(UNIQUE,NOT
NULL)列iso_code,但是Eclipse的Dali显示了验证错误,并且Hibernate抛出了MappingException。

是否允许这种常见情况?


问题答案:

@axtavt:看来您的答案不正确。我刚刚收到了来自“ Pro JPA 2.0”作者的电子邮件,他们自己也在从事JPA规范。

“在您的示例中,Zip类与某个国家/地区有关系:

public class Zip implements Serializable
{
    @Id
    @Column(name = "code")
    private String code;

    @Id
    @ManyToOne
    @JoinColumn(name = "country_code", referencedColumnName = "iso_code")
    private Country country = null;
    ...
}

这似乎是试图将country_code外键列指向Country表(不是PK)中的iso_code列。 JPA从未允许您创建这样的关系,
因为如果不指定国家/地区的PK,就无法唯一标识关系中的哪个国家/地区实例。当您到达派生的标识符部分时,您只是在解决问题,但问题似乎出在无效关系本身中。”

因此,JPA规范根本不允许将关系/ FK关联到非PK列…



 类似资料:
  • 问题内容: 我拼凑了一个图片网站。基本模式是非常简单的MySQL,但是在尝试表示与图像相关联的可能的管理标志(“不合适”,“受版权保护”等)时遇到了一些麻烦。我目前的概念如下: (为了方便阅读而被截断;我发誓要搭配各种外键和索引) 在标志类型的查找表上是外键,并且您可以想象 应该 在上外键。现在的问题是,当第一次发出标志时,没有逻辑解析类型(我将其声明为的一种很好的用法)。但是,如果设置了值,则应

  • 问题内容: 我有一个简单的表,其中包含学生编号和相应的教师编号,并且需要对它进行规范化,以输入到旧版系统中。 例如,下面是数据现在的样子: 我希望它看起来像这样,将每个Teacher分成一个单独的列,从左到右填充各列。一个业务规则是,每个学生最多只能有六位老师: 原始表中有10,000多行,因此我需要以编程方式执行此操作。谢谢! 问题答案: 您可以使用数据透视。您还需要“排名”您的老师1-6。请参

  • 我有下面的查询,其中两个表连接在非主列上。该表连接到一个公用列上。 用户详细信息 如何在JPA规范中实现相同的查询

  • 我遇到了一个非常有趣的场景。我知道n+1问题和FetchType.Eager和FetchMode.join。我有一个家长实体学校,它有2@onetomany儿童实体ie学生和教师。我需要所有3个,所以使用fetchtype.eager和fetchmode.join。 学校实体 学生实体 教师实体 学校回购 如果我通过findById方法获取School对象,即表的主键。 生成的SQL是学校、学生和

  • 为什么它更高效,因为像'your_name'这样的c.name扫描只在第一个查询中发生一次。

  • 非规范化数据不存储规范化的数据。换句话说非规范化意味着相同数据的多个拷贝同时存在。 上一章中,我们在帖子中非规范化评论总数,以避免每次都加载所有的评论。在数据建模意义上说这是冗余的,因为我们可以通过计数每个评论,随时计算出该总数(当不考虑运行速度)。 非规范化通常意味着额外的开发工作。在例子中,我们每次添加或删除评论时,还需要同时更新相关的帖子,以确保 commentsCount 字段保持准确。这