问题标签 [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.
hibernate - @joincolumn 注释的可选字段
我必须对模型类中的一列使用以下语法
但是我在“ optional
”处遇到编译错误,我正在使用persistence-api-1.0.jar
,请建议我如何解决这个问题。
jpa - JPA ManyToOne 可能为空 JoinColumn
我有一个关系,我无法弄清楚 JPA 如何(或者即使)可以映射它。
两个表由多个列连接。组合的列是唯一的但不是主键。
如果同时指定了 TYPE 和 SUBTYPE,JPA 仅返回 TypeInformation,但 SUBTYPE 经常为空。如何让 JPA 通过将两个空值比较为真来返回匹配的 TypeInformation?
这通常在 SQL 中通过将字段合并为非空值以进行比较来完成。如果数据库返回 null,我可以为 SUBTYPE 列指定一个值吗?
我正在使用的特定 JPA 实现是 Apache 的 OpenJPA 2.0,但我仍然对 Hibernate 或 EclipseLink 等其他实现是否允许此功能感兴趣。
jpa - 在此示例中,@OneToMany JPA 注释究竟是如何工作的?是和表列相关还是实体类字段相关?
我有 2 个分别命名为T_ACCOUNT和T_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列吗?
肿瘤坏死因子
hibernate - 通过单列而不是复合主键连接
我有一个 JPA 实体,我想在这个表上添加自加入。表看起来像例如
IdClass 看起来像:
根据我的业务逻辑,我只需要在单列上添加自加入
但是表有复合主键,所以不止一个字段用@Id注解。我得到如下异常:
引起:org.hibernate.AnnotationException:从 com.data.TableA 引用 com.data.TableA 的外键列数错误。应该是2。
我如何在此处仅在单列上添加自加入?我是 JPA 的新手,所以如果我遗漏了什么,请告诉我。
2015 年 2 月 21 日更新:我添加了注释 @AssociationOverride 来覆盖关联:
生成的列名显示为“TABLE_A_COLUMN_2”。我无法找出原因。有什么线索吗?
java - 需要的建议 - SPRING JPA JoinColumns
刚开始探索 SPRING 和 JPA。所以请多多包涵。
假设我有两张桌子
** 为了保持附件的灵活性(这样我可以在需要附件的其他地方重复使用相同的表/类),我使用REF_TYPE和REF_ID的组合来定位引用对象。
最好的方法是什么?
- 甚至应该这样做吗?有没有更好的 DB/Class 设计方法?
- 我应该使用@JoinColumns 吗?(但我不确定这将如何工作......)
- 或者加载附件的逻辑是否应该进入 Service/DAO 类,其中findByRefTypeAndRefId(String refType, long refId)函数回退到 JPARepository @Autowired接口?
hibernate - @JoinColumns 在两个表上都具有复合主键
我必须用几个像这样的表映射一个遗留数据库
它们都具有复合主键,而后者具有第一个的所有字段。我无法更改表格,所以我坚持按原样映射它们。
以下是课程:
这是关系的一方面
虽然这是针对多方面的
这种映射很有效,因为我能够检索实体,但是,我查看了这个简单测试生成的 sql:
这是sql代码:
如您所见,它多次检索第二个实体的 id,这让我相信我的映射是次优的。
我使用 Hibernate 4.3.10 作为 ORM。
有没有办法可以更正@JoinColumns 以避免检索多个列?
java - Hibernate 创建行而不是更新
我有 2 个实体:与 JoinTable user_role 链接的用户和角色
第二个 :
在更新(用户)休眠时,总是创建一个新角色而不是更新现有角色。我也尝试在没有 JoinTable 的情况下使用 JoinColumn 获得相同的结果。
使用哈希码和等于更新
java - 使用 JoinColumn (JPA/Hibernate) 时未生成列
我有以下实体:
IntegrationMapping和FlowElement共享主键字段“DISCOVERY_ID”、“SCENARIONAME”和“PROJECTNAME”(本质上是IntegrationProject的PK;IFlow有一个由IntegrationProject的PK和一个Name组成的主键),所以它们是Joined。
我让 Hibernate 在启动时从实体创建表。这样做时,FLOWELEMENT 表中缺少列“MAPPINGNAME”。
我也尝试使用@PrimaryKeyJoinColumn,这会导致创建列,但尽管变量不是空的。
执行此操作的正确方法是哪种(@JoinColumn 或 @PrimaryKeyJoinColumn),为什么未创建/填充列?
doctrine-orm - 教义为 JoinColumn 指定逻辑名称
我正在使用 Doctrine 2。我有一个关联实体,它指向两个实体。两者都是复合键的一部分。
我的问题是 JoinColumn 只允许指定物理名称,而不是逻辑名称。我需要两者不同。其他一切都可以映射,所以我觉得我错过了一些东西。
顺便说一句,我尝试将关系与 id 列(用户、用户 ID)分开,但这导致级联问题仍然存在。
任何解决方案或不同的路线将不胜感激。
openjpa - 尝试将列设置为两个不同的值并在 OneToOne 映射中导致 InvalidStateException
我有一张桌子ConfigManagementSettings
和一张桌子DeviceGroup
,如下所示:
当我进行如下简单的单元测试时
我得到了 InvalidStateException 如下
但是,我还有另外两个表 Subtask 和 SubtaskResult 如下:
还有一个简单的单元测试我做了如下
它可以正常工作并成功地保留实体。
我有什么遗漏吗?为什么这两种情况有不同的行为?
任何帮助表示赞赏。