问题标签 [embeddable]

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 回答
15754 浏览

java - 可嵌入和 ElementCollection 嵌套

我有一个相当典型的场景,其中有一个主要的 @Entity 并且他里面的所有东西都是可嵌入的(所以里面的所有东西都没有父母没有意义)。现在 JPA 2.0 阻止我将 @ElementCollection 嵌套在另一个 @ElementCollection 中定义的 @Embeddable 中:

JSR-317 2.6 可嵌入类和基本类型的集合 包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也不得包含与实体以外的实体的关系多对一或一对一关系

现在的问题是:为什么会这样?一个简单的例子:

这有什么问题?这只是一个示例,您可以将 Round 和 Edition 定义为 Entity 并解决问题,但在我的情况下,出于多种原因,我需要强制执行非常嵌套的东西没有他的父级是没有意义的。

为什么 JPA 2.0 必须阻止我这样做?

0 投票
1 回答
2375 浏览

jpa - 加入 JPA2.1 规范中的可嵌入类 - ContactInfo - 集合值路径必须解析为关联字段

我正在尝试学习 Java 持久性 API。所以它写在 JPA 2.1 规范的 page174 上:

在以下示例中,contactInfo 表示由地址和电话集组成的可嵌入类。电话是一个实体。

下面的查询等价于上面的查询:

然后在第 176 页:下面的查询通过 Employee、ContactInfo 和 Phone 连接。ContactInfo 是一个可嵌入的类,它包含一个地址和一组电话。电话是一个实体。

因此,当我尝试执行此类查询时,只有第一个有效。最后两个查询导致错误:线程“main”中的异常java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:编译问题[SELECT p.vendor FROM Employee e JOIN e.contactInfo c JOIN c。 phoneNumbers p WHERE c.address.zipcode = 'zip2']。[37, 50] 集合值路径“e.contactInfo”必须解析为关联字段。

谁能解释这是为什么?我还尝试从规范中重现连接到可嵌入类的其他示例,但总是遇到相同的错误。

谢谢您最好的问候

0 投票
1 回答
2814 浏览

java - @Embeddable 类中的 JPA @Version

当我在 @Embeddable 中使用 JPA @Version 注释时,我得到以下指向我的Updateable类的异常:

这是我的代码:

@Embeddable 中不可能有一个@Version,还是这个 Hibernate 是特定的?

0 投票
1 回答
1824 浏览

java - JPA Cascade Save 中的问题与子项中的 EmbeddedId

我上三节课。Personvehicle以及association连接人和车辆的类

PK人

车辆

人车协会

//================================================= ==============

执行上述保存逻辑时出现错误“:[entity.PersonVehAssnVO#component[name,dobDt]{dobDt=magesh, dobDt=1984-12-14 00:00:00}]"

显示 Sql 给出“ select personVehAssnVO_.NAME, personVehAssnVO_.DOB_DT, personVehAssnVO_.VEHICLE_ID as vehicle_34 from PERSON_VEHICLE_ASSOC where personVehAssnVO_.NAME=? and personVehAssnVO_.DOB_DT=?

我想保存PersonVehicle并且association在一次保存中意味着CASCADE ALL当我保存时Person

任何帮助表示赞赏

0 投票
0 回答
198 浏览

java - 在事务回滚时将@ElementCollection 持久化到数据库

我不知道为什么尽管事务回滚,但我的可嵌入对象列表仍然存在于数据库中。

我的实体用户具有可嵌入角色列表。

当我使用与数据库中已有的用户名相同的用户名持久化用户时,我看到一个异常:“RollbackException:无法提交:事务标记为回滚”,这很好,因为我有唯一的用户名列。但我不知道为什么,尽管回滚,该用户的角色列表仍然存在于数据库中。

就像事务仅适用于实体类,并且每次都将嵌入式角色列表保存到数据库,即使它不应该(因为回滚)。

我究竟做错了什么 ?感谢您的任何提示(我使用的是 OpenJPA 2.3.0)

用户代码:

角色代码:

0 投票
1 回答
2024 浏览

php - 从父实体映射中将可嵌入字段设置为主键 - Doctrine2

TLDR;Doctrine2:我需要知道是否可以将 Embeddable 中的字段从父实体(或 MappedSuperclass')映射中创建为主键。我已经知道如何从 Embeddable 的映射中设置主键,但这并不理想(参见“长版本”)。

长版; 我正在尝试使用 Doctrine2 Embeddables 为我的实体创建身份值对象。

这是我的问题...

  • 我在一个实体(MyEntity)中有两个不同的 Embeddables(MyEntityId 和 OtherEntityId)。

  • 我希望 MyEntityId 中的一个字段成为 MyEntity 的主键。

  • 由于我在同一个实体中有两个身份嵌入,我想在实体映射文件中定义主键字段,而不是可嵌入映射。

  • 如果我从可嵌入对象中定义主键,当我想对 OtherEntityId 执行相同操作时会遇到问题(因为我在其他地方使用它)。

  • 在 MyEntityId 和 OtherEntityId 中映射主键会导致 MyEntity 具有我不想要的复合键。

这是我目前的映射...

解决方案?

  • 创建两个单独的 Embeddables 来表示相同的 Id 值对象(不是很干也不是太复杂)

  • 从实体映射 Embeddable 的主键字段(这可能吗?我在文档中的任何地方都找不到它)

0 投票
0 回答
224 浏览

jsf - 如何在 Embeddable 中使用枚举?

我有一个@Embeddable包含属性的类@Enumerated。我想@Enumerated在 selectOneMenu primefaces 中显示此属性的值。问题是当我尝试显示我的页面时,它返回一个@Enumeratednull 异常,我不知道如何解决这个问题。

枚举

可嵌入

实体域

托管豆

Xhtml

例外

0 投票
0 回答
416 浏览

java - Hibernate @Embeddable static final

我有一个奇怪的行为。我有一个实体,它使用@Embeddables 来存储类型信息(TerminalType)。这种类型应该只有固定值。因此,我创建了 CLIENT、BROWSER、EXTRENAL 等常量。

然后在实体终端中使用此类

问题是值常量有时会发生变化。应用程序可以运行几个小时,但一段时间后,常量 CLIENT 的值为“BROWSER”。

我不知道什么/谁改变了常数?任何想法都会有所帮助!谢谢!

0 投票
1 回答
1358 浏览

java - Hibernate 可嵌入列表

我有两张现成的桌子:

我想为它的表映射两个类:

如果我添加List<Two> properties到一个类中,我必须添加哪些注释?“二”类标记为可嵌入。不推荐修改表。

0 投票
0 回答
245 浏览

jpa - @Embeddable 的 @ElementCollection 包含 @ManyToOne

我有以下型号

我使用 EclipseLink 作为 JPA 提供者。当让 EclipseLink 为这个结构生成 DDL 时,会发生以下事情:

  1. 在 ROOT 表上没有主键(好吧,它是一个 @Embeddable,并且它没有标识)
  2. 从 ROOT.GRAPH 到 GRAPH.ID 生成外键(如预期的那样)
  3. 从 ROOT.NODE 到 NODE.ID 没有外键(这是我无法理解的)

你能帮我解释一下这种行为的原因吗?对主键和缺少的外键有什么可以做的吗?

谢谢,M。