问题标签 [jpa]
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 - Hibernate / JPA中注释字段或getter方法之间的性能差异
我很好奇是否有人对使用私有字段而不是公共 getter 方法注释实体之间的性能差异有任何确切的数字。我听说人们说字段速度较慢,因为它们被称为“通过反射”,但是 getter 方法也是如此,不是吗?Hibernate 需要在尝试读取它之前将字段的可访问性设置为 true,我可以看到它有一些轻微的开销。但是,这不会在 Session 范围内的类级别上完成,或者可能只在读取 Configuration 并构建 SessionFactory 时完成一次?
只是好奇这是一个神话还是真的有真相;我个人发现注释字段更具可读性。
java - 您可以从 EntityListeners 访问 EntityManagers 吗?
我知道 JSR-000220 Enterprise JavaBeans 3.0 Final Release (persistence) 规范指出:
“一般而言,可移植应用程序不应调用 EntityManager 或 Query 操作、访问其他实体实例或修改生命周期回调方法中的关系。”
这看起来非常严格。我们有一种情况,我们想从 EntityListener 中访问 EntityManager。
在 Jboss/Glassfish 或任何其他应用程序服务器上的侦听器中使用 EntityManager 时,是否有人遇到过任何不利影响/缺陷?
grails - Grails 中的 MappedSuperclass 替代方案
在过去的许多项目中,我使用这种JPA / Hibernate 方法向系统添加审计功能。它非常有效且不引人注目。
是否有 Grails @MappedSuperclass 替代方案(在 Java 中编码域模型对象而不是 Groovy)?如何在不为父类创建表的情况下以每个子类的表的方式声明父类?我已经阅读了 GORM 文档(5.2.3 Inheritance in GORM),但除了每个层次结构表与每个子类表的讨论之外,我没有找到有关如何执行此操作的任何详细信息。
或者,在 Grails 中实现此类审计的推荐方法是什么?
java - javase项目中的Eclipselink问题
运行 eclipselink 项目时出现此错误。
有任何想法吗?为什么eclipselink需要来自jboss的东西?我需要什么 jboss jar。我会使用 open jpa,但由于某种原因,在我的应用程序中退出一些持续存在后,它开始给出一堆 stackoverflow 错误。
jpa - 如何检索通过级联与 JPA 持久保存的实体的 ID
如果一个人有一个常规的 Foo 实体并调用 persist(foo) ,则 @Id 会自动设置在实体上。但是,如果所述 Foo 实体具有通过绑定到它的 Bars 集合
并且这样的实例已经被持久化,如果创建一个新的 Bar 并将其添加到 foo 的 Bars 集合并调用 merge(foo) 刚刚创建的 Bar 将被持久化,但它的 @Id 没有更新!
有没有办法检索这个 id,而无需稍后调用 find(Foo.class, foo.getId())?
database - 在与另一个表有关系的表中插入行
在我的数据库模式中,我有一个已识别的实体。标识符可以重复使用,因此与实体存在一对多的关系。示例:一个人可以有一个昵称。昵称不是唯一的,可以在许多人之间共享。所以架构可能看起来像:
问题是插入一个新人时,我必须先查询NICKNAME
昵称是否存在。如果没有,那么我必须在NICKNAME
. 插入多人时,这可能会很慢,因为每个人插入都会导致查询NICKNAME
。
我可以通过首先查询所有昵称的昵称来优化大型插入。JPA 查询语言:
然后根据需要创建新昵称,然后在人员上设置nickname_id。
这使软件有点复杂,因为它必须将昵称临时存储在内存中。此外,一些数据库对IN
子句的参数有限制(SQL Server 是 2100 左右),所以我执行了多个查询。
我很好奇其他人是如何处理这个问题的。更具体地说,当一个数据库被规范化并且一个实体与另一个实体有关系时,插入一个新实体基本上会导致必须检查另一个实体。对于大型插入,这可能会很慢,除非将操作提升到代码域中。有没有办法自动插入相关的表行?
仅供参考,我正在使用 Hibernate 的 JPA 实现
eclipse - How to see SQL query using Hibernate Tools in Eclipse?
Having installed Hibernate Tools in Eclipse, how can I view the would-be generated SQL query of from the JPA query language? (I'm using Hibernate as my JPA implementation)
My Java DAO class looks something like:
I want to see what the corresponding SQL query will be. I've heard that Hibernate Tools has some kind of support for this.
java - 如何在 JPA 中使用枚举
我有一个电影租赁系统的现有数据库。每部电影都有一个评级属性。在 SQL 中,他们使用约束来限制该属性的允许值。
我认为使用 Java 枚举将约束映射到对象世界会很好。但由于“PG-13”和“NC-17”中的特殊字符,不可能简单地采用允许的值。所以我实现了以下枚举:
使用 toString() 方法,方向 enum -> String 工作正常,但 String -> enum 不起作用。我得到以下异常:
[TopLink 警告]: 2008.12.09 01:30:57.434--ServerSession(4729123)--异常 [TOPLINK-116] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DescriptorException 异常描述:没有为字段 [FILM.RATING] 中的值 [NC-17] 提供转换值。映射:oracle.toplink.essentials.mappings.DirectToFieldMapping[rating-->FILM.RATING] 描述符:RelationalDescriptor(de.fhw.nsdb.entities.Film --> [DatabaseTable(FILM)])
干杯
蒂莫
jpa - JPA 默认持久化单元
我收到异常“此部署中没有默认持久性单元”。我可以以某种方式将单位标记为默认单位吗?(我只有一个持久性单位,所以我宁愿不叫它名字)
java - Spring、Hibernate 和 JPA:在 entitymanager 上调用 persist 似乎并没有提交到数据库
我正在尝试使用 Hibernate 和 JPA 设置 Spring,但是在尝试持久化对象时,似乎没有将任何内容添加到数据库中。
我正在使用以下内容:
在 AccountManager 中,我正在做:
ac 来自哪里:
有没有人可以指出我做错了什么?持久调用返回而不抛出异常。如果之后我这样做em.contains(ac)
,这将返回 true。
如果有人需要,以下是 Account 的定义方式: