问题标签 [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.
jpa - 如何使用多个 ElementCollections 进行搜索
给定以下实体:
因此,订阅可以有零个或多个 mainCode 或它感兴趣的 otherCode。我可以获取经过的某个对象的 mainCode 和 otherCode。代码本身是可嵌入的,只有单个字符串字段。
如何创建一个 JPA 查询(或 CriteriaBuilder),它使用“或”机制在这些集合中进行搜索?
所以基本上我正在寻找这样的查询:
CriteriaBuilder 这样的事情是否可行,还是我需要使用更明确的查询?如果是这样,查询是什么样的?
编辑:用 CriteriaBuilder 试过这个:
但是,这会创建所涉及的两个集合的内部连接,这意味着如果数据库中存在 mainCode 行而不是 otherCode 行,它将不返回任何结果,它会生成以下查询:
SELECT t0.ID
FROM Subscription_OTHERCODES t2, Subscription_MAINCODES t1, subscription t0
WHERE ((t1.CODESYSTEM = ?) AND (t1.CODE = ?)) OR ((t2.CODESYSTEM = ?) AND (t2.CODE = ?))) AND ((t1.subscription = t0.ID) AND (t2.subscription = t0.ID))
因此,即使它找到匹配的 mainCode,如果它没有任何 otherCode,它也会失败。
hibernate - 在可嵌入对象上应用 where 子句时查询返回 Null
大家好,
和孩子班
有带有可嵌入复合键的模型。
这是查询。
如果我将 where 子句放在 child.test1 上,那么它将返回 null,null 作为记录。但如果我删除 where 子句,那么它会与 Parent 一起映射。
请帮我。
jpa - 从 JPA 元素集合中删除元素
好吧,我有一个带有 Branches 元素集合的餐厅实体。现在我的问题是如何从餐厅中删除分店,因为 Embeddable 对象没有 Id 。通常,如果分支是一个实体,我会怎么做
entityManager.remove(entityManager.getReference(Branch.class, branchId));
但是由于 Branch 是 Embeddable 对象(没有 ID),我不知道如何实现它。一些代码示例将不胜感激。提前致谢。
java - Hibernate @Embeddable 类为未引用的列抛出“SQLServerException:无效的列名”
我一直在为这个而烦恼。我有一个像这样拉对象的类:
随着班级的拉动:
其中引用了这个可嵌入对象:
所以,冗长的代码块被审查了一些东西,这是行不通的。每次我尝试从数据库中提取用户时,它都会抛出“SQLServerException: Invalid column name 'User_id'”。User_id 在我的项目中从未被引用(我已经检查过),它始终是abc_user。我可以看到对象在 Eclipse 调试器中被拉到一起,它达到了添加 UserPreferences 列表的地步,然后分崩离析。如果我注释掉 User 类的 UserPreferences 部分,它会成功提取(并在使用它们的其他地方中断)。
我错过了什么?
jakarta-ee - 如何用 ElementCollection 替换双向 OneToOne 关系?
“ Java Persistence 2.0, Final Release ” 第 404 页有以下示例:
示例 3:从可嵌入类到另一个实体的一对一关联。
我想在 Employee 中有多个 LocationDetails:
如何必须更改实体 ParkingSpot 以指向集合表 EMP_LOCATION 内的可嵌入 LocationDetails。
应该
替换为 @ElementCollection ?
谢谢你!
doctrine-orm - 如何使用 Doctrine Embeddables
我正在尝试在 Symfony 2 项目中使用 Doctrine 嵌入式。
我有一堂课Purchase
,我有一个price
可嵌入的字段:
由于价格需要一种货币才能完整,所以我有一个可嵌入的类来存储这两个值:
现在,数据库中的模式已正确创建,但是,当我持久化Purchase
实体时,出现以下错误:
SQLSTATE [23000]:违反完整性约束:1048 列 'price_amount' 不能为空
我相信它:我还不明白这个机制是如何工作的。
我如何从“真实”实体(Purchase
)中设置和获取值?
我将值作为Money
对象(我使用的值对象)传递给实体中的方法setPrice()
,Purchase
但是,如何将此值拆分为两个属性amount
并currency
在可嵌入类中设置?
因为做一个var_dump
(使用VarDumperdump()
的功能)我得到了正确的实体集:
但是这些值没有在 Embeddable 中设置,我不明白为什么......
我也尝试对嵌入式类中的值进行硬编码,但无论如何它都不起作用,而且我也不明白为什么:
java - 在 EclipseLink-2.5.2 中为 Embeddable 类配置 ID 类型时出现奇怪的问题
在我当前的实现中,每个 db 表都有单独的实体类。我正在使用 JPA 和 eclipselink-2.5.2。这对我来说很好,但在某些时候数据很大时,它会滞后。这就是我决定开始使用@Embedded、@Embeddable 和@EmbeddedId 的原因。这样做时,我遇到了一个对我来说很奇怪的错误。这是发布的完整堆栈跟踪:https ://gist.githubusercontent.com/tjDudhatra/b955812e0d1a71cf97f1/raw/11ea458869e24baae744530417ac99bc877ed514/gistfile1.txt
具体来说,让我给你一个确切的场景,在这种情况下我得到了例外。考虑这个具有三个类的代码块。一个被注释为@Entity,其他两个被注释为@Embeddable。我知道在一个类中我们不能定义 @Id 和 @EmbeddedId 并且我没有这样做,然后在部署服务器时,我得到一个异常,它只说:
[class org.apache.{SomeClass}] 有一个@EmbdeddedId(在属性[id] 上)和一个@Id(在属性[] 上)。不能在同一个实体上指定这两种ID 类型。
如果需要更多详细信息,请告诉我,任何帮助将不胜感激。
谢谢,
symfony - 具有不可空字段的可空嵌入值对象
我在 Doctrine2 中创建了一个实体“Person”,并向它添加了一个 Adress 实体,它是一个值对象(可嵌入)。
我想允许一个没有地址的人创建,所以我将我的嵌入标记为“nullable = true”。但另一方面,我的地址实体,如果存在,应该至少包含一些信息(如城市、邮政编码等)。所以它有“nullable = false”属性。
嵌入对象的“nullable = true”似乎不起作用。你知道这是否是正常的教义行为吗?我是否必须将所有可嵌入属性都设置为 nullable = true ?
maven - 使用 db2 jar 在 maven 构建过程中运行 junit
我正在开发一个基于 java 的 webapp,其中我使用 websphere JAX-RS 实现,EJB 作为中间层,OpenJPA 作为 DAO 层,后端使用 DB2 来实现数据持久性。我还为代码编写 junits。我在我的 eclipse 工作区中运行 junits,并且我在我的 bean 中使用依赖注入注释,所以我利用 websphere 提供的轻量级嵌入式容器 jar 来使 junit 快速启动和运行。我提供这个 jar 作为 java 代理,如下所示:
因为我在 DAO 操作的测试中还需要 DB2 jars,所以我将这些 jars 提供为:
我终于能够运行我的junits了。
但是当我单独运行一个junit时,我会遵循这种方法。现在我计划在 maven 构建过程(maven install -e)中运行我所有的 junit。我提供了所需的依赖项:
但是在 maven 构建中,junits 失败并出现奇怪的问题:org.apache.openjpa.persistence.ArgumentException:“xyzMyEntity”类型没有得到增强。
我已经尝试了所有方法,但无法解决我们的这个问题。请在这里帮助我。
pom.xml:
错误跟踪:
引起:javax.ejb.EJBException:见嵌套异常;嵌套异常是:org.apache.openjpa.persistence.ArgumentException:类型“com.test.febe.model.OrgUnit”尚未增强。原因:org.apache.openjpa.persistence.ArgumentException:类型“com.test.febe.model.OrgUnit”没有增强。在 org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) 在 org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) 在 org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) 在 org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:722) 在 org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:646) 在 org.apache。 openjpa.meta.MetaDataRepository。
测试运行:2,失败:0,错误:2,跳过:0,经过的时间:8.693 秒 <<< 失败!- 在 com.test.febe.test.org.OrgUnitTest testGetAllOrgUnits(com.test.febe.test.org.OrgUnitTest) 经过时间:2.541 秒 <<< 错误!javax.ejb.EJBTransactionRolledbackException:嵌套异常是:javax.ejb.EJBTransactionRolledbackException:嵌套异常是:javax.ejb.EJBException:见嵌套异常;嵌套异常是:org.apache.openjpa.persistence.ArgumentException:类型“com.test.febe.model.OrgUnit”尚未增强。在 org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) 在 org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) 在 org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) 在 org.apache.openjpa.meta。
testGetOrgUnit(com.test.febe.test.org.OrgUnitTest) 已用时间:1.904 秒 <<< 错误!javax.ejb.EJBTransactionRolledbackException:嵌套异常是:javax.ejb.EJBTransactionRolledbackException:嵌套异常是:javax.ejb.EJBException:见嵌套异常;嵌套异常是:org.apache.openjpa.persistence.ArgumentException:类型“com.test.febe.model.OrgUnit”尚未增强。在 org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) 在 org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) 在 org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) 在 org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:722) 在 org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:
java - Hibernate 中嵌入字段的默认值。java.sql.SQLException:字段 'url' 没有默认值
我有一个抽象类A
,类B
和C
子类A
。类B
有一个嵌入字段d
。现在,当我尝试保存一切的实例时,B
一切都很好。但是在创建C
并保存它的实例时,我收到一个错误:
例如类: