问题标签 [openjpa]

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

database - 我们可以将自定义查询提示分配给 JPA NamedQueries

我们需要将查询编号附加到我们的应用程序执行的每个查询中。

例如:SELECT * FROM ... WHERE ... QUERYNO 123456

OpenJPA 支持查询提示,但仅针对特定实现的特定提示。

但是根据 JPA 规范和 openjpa “无效提示或特定数据库无法处理的提示将被忽略。否则,无效提示将导致 ArgumentException 被抛出。” 所以指定“QUERYNO”作为提示似乎没有影响。

如何创建自定义查询提示以在运行时指定?

... Query q = em.createQuery("select m from Magazine m where ..."); q.setHint(" com.me.CustomQueryNoHint ", new Integer(2234)); 列表 r = q.getResultList(); ...

0 投票
1 回答
6266 浏览

jpa - OpenJPA 的 Maven 原型

问候。

我刚刚开始探索 Maven,我使用 m2eclipse 在 Eclipse 中使用 Maven。

我发现有一个基于休眠的原型,组 ID:com.rfc.maven.archetypes 和工件 ID:jpa-maven-archetype

有谁知道是否有包含测试框架的基于 OpenJPA 的原型?

非常感谢。

0 投票
1 回答
1454 浏览

java - 级联持久化无法为新实体生成主键,为什么?

这是代码:

然后在单元测试中我这样做(使用 OpenJPA):

OpenJPA 说:

为什么 ID 不是自动生成的?

0 投票
0 回答
1775 浏览

java - OpenJPA:ManyToOne 关系的目标可以是@Embedded 字段吗?

我正在尝试使用 ManyToOne 关系,其中外键链接到目标类中的 @Embedded 字段。这可以很好地编译和增强,但是在运行此代码时,OpenJPA 会报错。这适用于 OpenJPA 2.0.1。在代码中,它看起来像这样:

MySQL对应的数据库Schema:

这里发生的事情如下。我有一个Phone嵌入类的NormalizedNumber类。但是,这normalizedNumber不是主键,也不是@Id类的。它有一个不同的key领域@Id

一个UserPhone类有一个类的引用Phone。这是一种@ManyToOne关系,因为许多用户可以共享同一部电话。该 UsersPhones表不使用表的主键Phones作为外键,而是使用NormalizedNumber列。显然这在 JPA 中可能无效,但 OpenJPA 手册指出 OpenJPA 支持目标列不是主键的连接“与主键连接具有相同的语法”。

从手册中我被引导相信这也适用于嵌入式字段。但我想我一定误解了这一点,因为事实并非如此。这是我得到的例外:

“你不能加入'Phones.normalizedNumber'列。它不是由支持连接的映射管理的。”

现在,我已经用调试器逐步检查了 OpenJPA 两天,如果我做错了什么或者它不合法,因为我没有在任何文档中明确描述它,我会找到提示。我在 Javadoc 中发现 OpenJPAEmbedFieldStrategy没有实现Joinable. 所以也许我正在尝试不可能的事情。

因此,专家们的问题是:这是否允许?还是关系的目标不是嵌入字段(我猜除了@EmbeddedId)?

我可以覆盖嵌入NormalizedNumber以将 normaizedNumber 定义为@Id吗?

0 投票
1 回答
1573 浏览

java - OpenJPA:如何使用组计数构造 GROUP BY 查询

在 JPQL 中,我想构造与此等效的查询:

fingerprinttable 中的 varchar 字段在哪里page_delta_summary。我所拥有的是:

PageDeltaSummary我的实体在哪里。但我得到以下异常:

org.apache.openjpa.persistence.ArgumentException:您对类型“com.su3analytics.sitedelta.model.PageDeltaSummary”的查询,过滤器“select d, count(d) from PageDeltaSummary d where d.deltaHistoryId = :deltaHistoryId and d.type = :pageDeltaType GROUP BY d.fingerprint" 无效。 您的 select 和 having 子句必须仅包含也出现在您的分组子句中的聚合或值。

如果我将 count(d) 删除为 finger_count 或 GROUP BY,则查询工作正常。

有什么建议么?

谢谢

0 投票
11 回答
121647 浏览

dictionary - JPA 查询可以将结果作为 Java 映射返回吗?

我们目前正在Map基于命名 JPA 查询返回的两个字段手动构建一个,因为 JPA 2.1 仅提供一种getResultList()方法:

但是,我觉得自定义映射器或类似的会更高效,因为这个列表很容易有 30,000 多个结果。

无需手动迭代即可构建地图的任何想法。

(我使用的是 OpenJPA,不是休眠)

0 投票
1 回答
943 浏览

java - 使用 Hibernate 继承时的问题

我正在做一个小练习,在调用选择查询时遇到了一些问题。

基本上我通过以下方式创建了一个抽象类:

和两个子类如下:

我的环境是:

我还运行了一个持久化 roo 命令:

然后我编写了控制器类如下:

HappyStage 有方法 findAbstractStagesByDateGreaterThan。想法是从子类中调用此方法并获取日期大于的所有抽象阶段。

这是 HappyStage 类的代码:

问题是,当我在服务器上运行代码并转到 * /happystages/happy时,我得到一个带有以下堆栈跟踪的 nullPointer 异常:。*

运行 JUnit 测试,我们发现异常中的错误可能与 Hibernate 如何处理 SQL 查询有关。添加一些断点我们发现这可能是涉及的代码:

我们现在正在进一步分解代码,但 *我想知道你们中是否有人已经遇到过类似的问题。有什么我想念的吗?可以将抽象类作为父类还是有必要将其作为“具体”类?*在我看来,您不能拥有一个抽象类并对其进行扩展,然后使用它通过基于继承值的查询来查询所有子类,这对我来说似乎很奇怪。

请要求我澄清,因为我的问题可能没有得到正确解释。

此致

PS:我也尝试过在 AbstractClass 中不使用 --Abstract 关键字。它仍然不起作用,并在去happystages/happy并触发get方法时给了我这个expetion(调用:TypedQuery queryResults = HappyStage.findAbstractStagesByDateGreaterThan(dd) ;)“

似乎它与 MySQl 和 Abstract 无关,因为我还将 hibernate 使用的方言 SQL 查询翻译成真正的 SQL 查询,并直接在 MySQL shell 上运行它

0 投票
1 回答
430 浏览

java - OpenJPA - 如果需要,如何设置自动增量字段的值

我已经设置了我的 OpenJPA orm.xml 来映射一个将其主键作为自动增量值的实体。我正在使用一个

属性,这一切都很好,花花公子。

但是,在某些情况下,我希望设置一个特定的 ObjectId(一个已被使用,然后记录被删除的)。这可能吗?我应该为此创建一个新实体吗?

提前致谢!

0 投票
0 回答
468 浏览

java - JPA 事务错误(不在数据库端,值被持久化)

我面临以下错误:

尝试将 ID“com.abc.java”分配给新实例“com.abc.java”失败;L1 缓存中已经有一个具有此 ID 的对象。在重用它的 id 之前,您必须删除这个对象(在以前的事务中或当前的事务中)。当水平或垂直映射的类使用自动增量应用程序标识并且不使用应用程序标识类的层次结构时,也会发生此错误。-

0 投票
1 回答
774 浏览

jpa - 如何在openjpa中启用sql登录?

我已经使用 java、jps 编写了 proram。现在我可以在 cosole 上看到以下日志:

插入到 XYZ (a,b,c) 值 (?, ?, ?) [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]

我还想查看传递给在日志中插入查询的值。我怎样才能看到它?AM 使用 openjpa 作为 jpa 提供程序。