问题标签 [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.
java - 我应该使用哪个注释:@IdClass 或 @EmbeddedId
( JPA
Java Persistence API) 规范有 2 种不同的方式来指定实体复合键:@IdClass
和@EmbeddedId
.
我在我的映射实体上使用了这两个注释,但对于不太熟悉JPA
.
我只想采用一种方式来指定复合键。哪一个真的是最好的?为什么?
jpa - JPA EntityManager:为什么使用persist()而不是merge()?
EntityManager.merge()
可以插入新对象并更新现有对象。
为什么要使用persist()
(只能创建新对象)?
java - Java Persistence API 中 FetchType LAZY 和 EAGER 的区别?
我是 Java Persistence API 和 Hibernate 的新手。
Java Persistence APIFetchType.LAZY
和in之间有什么区别?FetchType.EAGER
java - Spring jpa criteriaBuilder 在列表中搜索
我有一个带有作者列表的书籍类:
现在,这是我的BookSpecifications
课:
如何检查给定authorId
是否在列表中?
错误:
jpa - JPA+HIBERNATE:多对多关系中的笛卡尔积
我试图解释这个问题。我有一个具有多对多关系的实体
数据库表是:
当我尝试执行以下 jpql 查询时
结果是一个包含两个元素(id 为 55499)的数组列表,每个元素都有一个包含两个元素的数组列表(一个 id 为 55498,一个 id 为 55497)。我想获得的结果是一个元素(id 为 55499),其中包含两个元素的 arraylist(一个 id 为 55498,一个 id 为 55497)。我希望我很清楚。你能帮我优化一下java对象结果吗(我依稀记得eclipselink中的QueryHints.BATCH)?
jpa - JPA:实体扩展实体
如何用另一个实体扩展一个实体,但它们都引用同一个表?可能吗 ?结构是这样的:
我试过这种方式扩展 JPA 实体以添加属性和逻辑
但我得到了这个例外
更新 1
我已经@Id
为 SubUser 放置了,因为@Entity
显示了这个异常
The entity has no primary key attribute defined
java - 当主键自动递增时,如何使用 JPA (EclipseLink) 从数据库中获取特定的“行”?
说我有这张桌子
过去我用过
但是这种情况下的主键是自动递增的,是否可以使用其他列(例如 first_name 和 last_name)来获取一行以获取主键以及其他值?
java - 具有可选属性的 Java 持久性映射超类
我正在使用该javax.persistence
包来映射我的 Java 类。
我有这样的实体:
它扩展了一个名为的映射超类IdEntity
:
超IdEntity
类扩展了另一个名为的映射超类VersionEntity
,以使所有实体都继承版本属性:
为什么?
因为现在我可以对所有实体的 IdEntity 类进行通用查询,它看起来像这样:(示例)
现在来解决问题。
我的一些实体将具有时间戳,例如created_at
和deleted_at
。但并非所有实体。
我可以在我的实体类中提供这些属性,如下所示:
但是由于我有很多实体,这将使我在所有应该有时间戳的实体中放置大量冗余代码。我希望有某种方法可以使相关类以某种方式继承这些字段。
一种可能的解决方案是创建一个并行IdEntity
超类,可能命名IdAndTimeStampEntity
并让那些应该具有时间戳的实体从这个新超类继承,但是嘿,这对我的同事开发人员不公平,因为现在他们必须知道何时选择哪个超类编写通用查询:
并且通用实体查询变得不那么通用..
我的问题:如何让
all
我的实体继承id
和version
字段,但只有所有实体的子部分继承时间戳字段,但将我的查询保留为单一类型的实体?
更新#1
来自 Bolzano 的问题:“您可以添加为实体指定路径(保存表信息)的代码吗?”
UserEntity
这是查询 a 的工作示例IdEntity
java - 带有 @IdClass 注释的类中的可插入对象
是否可以在 Section.class 中进行级联保存?我创建 Section 对象并添加没有 id 的新问题。当我尝试保存它时,我收到错误:
org.postgresql.util.PSQLException:错误:在表“question_to_section”上插入或更新违反了外键约束“fk_2br9f09ok965403a9rv5y2n10”详细信息:表“问题”中不存在键(question_id)=(0)。
我也尝试使用@Embedded 注释,但没有成功。
部分类:
问题到部分类
QuestionSectionId
java - 标准 API 连接:java.lang.IllegalArgumentException:无法解析属性
我正在尝试通过 jpa 标准 api 进行简单的连接操作,但出现错误:
java.lang.IllegalArgumentException:无法针对 org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:120) 在 org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute 的路径解析属性 [Companies] (AbstractPathImpl.java:229) 在 org.hibernate.ejb.criteria.path.AbstractFromImpl.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