问题标签 [java-persistence-api]

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 投票
7 回答
103361 浏览

java - 我应该使用哪个注释:@IdClass 或 @EmbeddedId

( JPAJava Persistence API) 规范有 2 种不同的方式来指定实体复合键:@IdClass@EmbeddedId.

我在我的映射实体上使用了这两个注释,但对于不太熟悉JPA.

我只想采用一种方式来指定复合键。哪一个真的是最好的?为什么?

0 投票
15 回答
682953 浏览

jpa - JPA EntityManager:为什么使用persist()而不是merge()?

EntityManager.merge()可以插入新对象并更新现有对象。

为什么要使用persist()(只能创建新对象)?

0 投票
17 回答
608344 浏览

java - Java Persistence API 中 FetchType LAZY 和 EAGER 的区别?

我是 Java Persistence API 和 Hibernate 的新手。

Java Persistence APIFetchType.LAZY和in之间有什么区别?FetchType.EAGER

0 投票
1 回答
8591 浏览

java - Spring jpa criteriaBuilder 在列表中搜索

我有一个带有作者列表的书籍类:

现在,这是我的BookSpecifications课:

如何检查给定authorId是否在列表中?

错误:

0 投票
1 回答
645 浏览

jpa - JPA+HIBERNATE:多对多关系中的笛卡尔积

我试图解释这个问题。我有一个具有多对多关系的实体

数据库表是:

当我尝试执行以下 jpql 查询时

结果是一个包含两个元素(id 为 55499)的数组列表,每个元素都有一个包含两个元素的数组列表(一个 id 为 55498,一个 id 为 55497)。我想获得的结果是一个元素(id 为 55499),其中包含两个元素的 arraylist(一个 id 为 55498,一个 id 为 55497)。我希望我很清楚。你能帮我优化一下java对象结果吗(我依稀记得eclipselink中的QueryHints.BATCH)?

0 投票
2 回答
4565 浏览

jpa - JPA:实体扩展实体

如何用另一个实体扩展一个实体,但它们都引用同一个表?可能吗 ?结构是这样的:

我试过这种方式扩展 JPA 实体以添加属性和逻辑

但我得到了这个例外

更新 1

我已经@Id为 SubUser 放置了,因为@Entity显示了这个异常

The entity has no primary key attribute defined

0 投票
2 回答
208 浏览

java - 当主键自动递增时,如何使用 JPA (EclipseLink) 从数据库中获取特定的“行”?

说我有这张桌子

过去我用过

但是这种情况下的主键是自动递增的,是否可以使用其他列(例如 first_name 和 last_name)来获取一行以获取主键以及其他值?

0 投票
3 回答
2310 浏览

java - 具有可选属性的 Java 持久性映射超类

我正在使用该javax.persistence包来映射我的 Java 类。

我有这样的实体:

它扩展了一个名为的映射超类IdEntity

IdEntity类扩展了另一个名为的映射超类VersionEntity,以使所有实体都继承版本属性:

为什么?

因为现在我可以对所有实体的 IdEntity 类进行通用查询,它看起来像这样:(示例)

现在来解决问题。

我的一些实体将具有时间戳,例如created_atdeleted_at。但并非所有实体。

我可以在我的实体类中提供这些属性,如下所示:

但是由于我有很多实体,这将使我在所有应该有时间戳的实体中放置大量冗余代码。我希望有某种方法可以使相关类以某种方式继承这些字段。

一种可能的解决方案是创建一个并行IdEntity超类,可能命名IdAndTimeStampEntity并让那些应该具有时间戳的实体从这个新超类继承,但是嘿,这对我的同事开发人员不公平,因为现在他们必须知道何时选择哪个超类编写通用查询:

并且通用实体查询变得不那么通用..

我的问题:如何让all我的实体继承idversion字段,但只有所有实体的子部分继承时间戳字段,但将我的查询保留为单一类型的实体?

更新#1

来自 Bolzano 的问题:“您可以添加为实体指定路径(保存表信息)的代码吗?”

UserEntity这是查询 a 的工作示例IdEntity

0 投票
2 回答
499 浏览

java - 带有 @IdClass 注释的类中的可插入对象

是否可以在 Section.class 中进行级联保存?我创建 Section 对象并添加没有 id 的新问题。当我尝试保存它时,我收到错误:

org.postgresql.util.PSQLException:错误:在表“question_to_section”上插入或更新违反了外键约束“fk_2br9f09ok965403a9rv5y2n10”详细信息:表“问题”中不存在键(question_id)=(0)。

我也尝试使用@Embedded 注释,但没有成功。

部分类:

问题到部分类

QuestionSectionId

0 投票
1 回答
793 浏览

java - 标准 API 连接:java.lang.IllegalArgumentException:无法解析属性

我正在尝试通过 jpa 标准 api 进行简单的连接操作,但出现错误:

java.lang.IllegalArgumentException:无法针对 org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.unknownAttribute(AbstractPathImpl.java:120) 在 org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.locateAttribute 的路径解析属性 [Companies] (AbstractPathImpl.java:229) 在 org.hibernate.ejb.criteria.path.Abs​​tractFromImpl.join(AbstractFromImpl.java:411) 在 com.maven_test.models.jpa.dao.ServicesDAO.findAllWithCompaniesByCriteria(ServicesDAO.java:106) 在com.maven_test.models.jpa.ServicesFindByIdByCriteria.test2(ServicesFindByIdByCriteria.java:44) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect。 org.junit 上的 DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)。runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod .java:47) 在 org.junit.runners 的 org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 的 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)。 BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit。 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 上 org.junit.runners 上的 runners.ParentRunner$1.schedule(ParentRunner.java:71)。ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit .runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211 ) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner .java:74) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 在太阳。 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 处 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 处的 reflect.NativeMethodAccessorImpl.invoke0(Native Method)java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner .java:74) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 在太阳。 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 处 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 处的 reflect.NativeMethodAccessorImpl.invoke0(Native Method)startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)execution.application.AppMain.main(AppMain.java:134)execution.application.AppMain.main(AppMain.java:134)

方法如下:

我们必须加入的表的名称是“zaks_companies”,这两种情况的错误都是一样的。

和公司模型:

我的一本手册在这里:https ://www.youtube.com/watch?v= J-f4jvljpgQ 16:50