问题标签 [joincolumn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
384 浏览

hibernate - @joincolumn 注释的可选字段

我必须对模型类中的一列使用以下语法

但是我在“ optional”处遇到编译错误,我正在使用persistence-api-1.0.jar,请建议我如何解决这个问题。

0 投票
0 回答
947 浏览

jpa - JPA ManyToOne 可能为空 JoinColumn

我有一个关系,我无法弄清楚 JPA 如何(或者即使)可以映射它。

两个表由多个列连接。组合的列是唯一的但不是主键。

如果同时指定了 TYPE 和 SUBTYPE,JPA 仅返回 TypeInformation,但 SUBTYPE 经常为空。如何让 JPA 通过将两个空值比较为真来返回匹配的 TypeInformation?

这通常在 SQL 中通过将字段合并为非空值以进行比较来完成。如果数据库返回 null,我可以为 SUBTYPE 列指定一个值吗?

我正在使用的特定 JPA 实现是 Apache 的 OpenJPA 2.0,但我仍然对 Hibernate 或 EclipseLink 等其他实现是否允许此功能感兴趣。

0 投票
2 回答
914 浏览

jpa - 在此示例中,@OneToMany JPA 注释究竟是如何工作的?是和表列相关还是实体类字段相关?

我有 2 个分别命名为T_ACCOUNTT_ACCOUNT_BENEFICIARY的数据库表。

这些表具有以下结构:

并且T_ACCOUNT表以一对多的关系绑定到T_ACCOUNT_BENEFICIARY表,这是图形表示:

在此处输入图像描述

所以这是第一个名为Account的类,它映射T_ACCOUNT表:

这是映射T_ACCOUNT_BENEFICIARY表的Beneficiary类:

正如您在帐户中看到的那样,我有一个受益人字段,它实现了一个可能的关系

我知道,在数据库上,这种关系是由 T_ACCOUNT_BENEFICIARY 表的ACCOUNT_ID字段实现的(因此T_ACCOUNT_BENEFICIARY表的多行可以具有相同的ACCOUNT_ID字段值,这意味着 T_ACCOUNT 表的单行可以是关联到多行T_ACCOUNT_BENEFICIARY表)。

正如您在前面的 sippet 中看到的,有@JoinColumn(name="ACCOUNT_ID")注释。

我的怀疑是由于我的T_ACCOUNT_BENEFICIARY表上有一个ACCOUNT_ID列,事实上:

但是此列似乎未映射到映射此T_ACCOUNT_BENEFICIARY表的受益人。

所以我的疑问是:@JoinColumn(name="ACCOUNT_ID")正在关系级别工作,对受益人实体(T_ACCOUNT_BENEFICIARY )映射的表的ACCOUNT_ID列执行连接操作,还是我遗漏了什么?这个连接究竟是如何执行的?

如果我的解释是正确的,我可以在实体级别工作并说将我的Account实体类的beneficiaries字段加入到插入到我的Beneficiary实体类中的新accountId字段并映射T_ACCOUNT_BENEFICIARY表的ACCOUNT_ID列吗?

肿瘤坏死因子

0 投票
1 回答
5609 浏览

hibernate - 通过单列而不是复合主键连接

我有一个 JPA 实体,我想在这个表上添加自加入。表看起来像例如

IdClass 看起来像:

根据我的业务逻辑,我只需要在单列上添加自加入

但是表有复合主键,所以不止一个字段用@Id注解。我得到如下异常:

引起:org.hibernate.AnnotationException:从 com.data.TableA 引用 com.data.TableA 的外键列数错误。应该是2。

我如何在此处仅在单列上添加自加入?我是 JPA 的新手,所以如果我遗漏了什么,请告诉我。

2015 年 2 月 21 日更新:我添加了注释 @AssociationOverride 来覆盖关联:

生成的列名显示为“TABLE_A_COLUMN_2”。我无法找出原因。有什么线索吗?

0 投票
2 回答
202 浏览

java - 需要的建议 - SPRING JPA JoinColumns

刚开始探索 SPRING 和 JPA。所以请多多包涵。

假设我有两张桌子

** 为了保持附件的灵活性(这样我可以在需要附件的其他地方重复使用相同的表/类),我使用REF_TYPEREF_ID的组合来定位引用对象。

最好的方法是什么?
- 甚至应该这样做吗?有没有更好的 DB/Class 设计方法?

- 我应该使用@JoinColumns 吗?(但我不确定这将如何工作......)

- 或者加载附件的逻辑是否应该进入 Service/DAO 类,其中findByRefTypeAndRefId(String refType, long refId)函数回退到 JPARepository @Autowired接口?

0 投票
0 回答
3188 浏览

hibernate - @JoinColumns 在两个表上都具有复合主键

我必须用几个像这样的表映射一个遗留数据库

它们都具有复合主键,而后者具有第一个的所有字段。我无法更改表格,所以我坚持按原样映射它们。

以下是课程:

这是关系的一方面

虽然这是针对多方面的

这种映射很有效,因为我能够检索实体,但是,我查看了这个简单测试生成的 sql:

这是sql代码:

如您所见,它多次检索第二个实体的 id,这让我相信我的映射是次优的。

我使用 Hibernate 4.3.10 作为 ORM。

有没有办法可以更正@JoinColumns 以避免检索多个列?

0 投票
0 回答
107 浏览

java - Hibernate 创建行而不是更新

我有 2 个实体:与 JoinTable user_role 链接的用户和角色

第二个 :

在更新(用户)休眠时,总是创建一个新角色而不是更新现有角色。我也尝试在没有 JoinTable 的情况下使用 JoinColumn 获得相同的结果。

使用哈希码和等于更新

0 投票
1 回答
1042 浏览

java - 使用 JoinColumn (JPA/Hibernate) 时未生成列

我有以下实体:

IntegrationMapping和FlowElement共享主键字段“DISCOVERY_ID”、“SCENARIONAME”和“PROJECTNAME”(本质上是IntegrationProject的PK;IFlow有一个由IntegrationProject的PK和一个Name组成的主键),所以它们是Joined。

我让 Hibernate 在启动时从实体创建表。这样做时,FLOWELEMENT 表中缺少列“MAPPINGNAME”。

我也尝试使用@PrimaryKeyJoinColumn,这会导致创建列,但尽管变量不是空的。

执行此操作的正确方法是哪种(@JoinColumn 或 @PrimaryKeyJoinColumn),为什么未创建/填充列?

0 投票
0 回答
95 浏览

doctrine-orm - 教义为 JoinColumn 指定逻辑名称

我正在使用 Doctrine 2。我有一个关联实体,它指向两个实体。两者都是复合键的一部分。

我的问题是 JoinColumn 只允许指定物理名称,而不是逻辑名称。我需要两者不同。其他一切都可以映射,所以我觉得我错过了一些东西。

顺便说一句,我尝试将关系与 id 列(用户、用户 ID)分开,但这导致级联问题仍然存在。

任何解决方案或不同的路线将不胜感激。

0 投票
0 回答
689 浏览

openjpa - 尝试将列设置为两个不同的值并在 OneToOne 映射中导致 InvalidStateException

我有一张桌子ConfigManagementSettings和一张桌子DeviceGroup,如下所示:


当我进行如下简单的单元测试时

我得到了 InvalidStateException 如下

但是,我还有另外两个表 Subtask 和 SubtaskResult 如下:


还有一个简单的单元测试我做了如下

它可以正常工作并成功地保留实体。

我有什么遗漏吗?为什么这两种情况有不同的行为?

任何帮助表示赞赏。