问题标签 [eclipselink]
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 - 使用 JPA 间接生成复合主键的序列号
我有一个带有复合主键(uid,lid)的 JPA 实体类,它在数据库中应该如下所示;
如何让 EclipseLink/JPA 即时生成序列号,或者如何找出 UID 列中的最高数字?
或者如果我有一个 UID 但想添加一个新的 LID?
抱歉,如果这是一个太简单的问题。:) 复合键对我来说是一件相当复杂的事情,但我想我开始有点理解它们了。
java - 类似子句 JPQL 中的参数
我正在尝试使用 like 子句编写 JPQL 查询:
我想要 code=4 并找到
我不能通过:code = '%value%'
因为在另一个地方我不需要被字符:value
包裹。%
有什么帮助吗?
jpa - 删除一个实体,但删除后使用相同的主键添加相似的实体
我试图删除一个具有唯一 PK 的实体,例如:80253
我通过执行以下代码行来删除此实体:
这些代码实际上正确地从我的数据库及其所有级联对象中删除了行,对此我感到非常高兴。现在,当我现在需要创建一个使用相同主键的类似实体(现在应该消失了?)时,问题就出现了。
现在这是我得到唯一约束 SQL 错误的地方。我试图插入一个已经存在的 ID,并且更改会自动回滚(不再删除旧实体)。这发生在我在记录器中看到 toplink 已删除旧实体的记录之后。
有谁知道这是怎么发生的,为什么它不起作用?作为记录,我尝试合并、关闭、清除 entityManager,但似乎没有任何效果。
在我看来,JPA 可能会做一些糟糕的缓存或其他事情。我希望有人能给我一个好的答案!=)
更新:唯一 ID 约束不再存在问题,但我创建了一个具有相同主键的新子类,该主键已被删除,但出现以下异常:
在我看来,它不会让我将对象更改为不同的子类?
inheritance - JPA 继承需要子类中的 ID
我的 jpa 域模型有问题。我只是想尝试简单的继承,为此我使用了一个简单的 Person 基类和一个 Customer 子类。根据官方文档(JPA 和 EclipseLink),我只需要基类中的 ID 属性/列。但是当我运行我的测试时,我总是得到一个错误,告诉我客户没有@Id?
首先,我认为问题在于 id 属性的可见性,因为它首先是私有的。但即使我将其更改为受保护(因此子类可以直接访问)它也无法正常工作。
人:
顾客:
我的想法和资源已经用完了。这应该是一个相当简单的问题,但我只是没有看到它。
java - 如何在 EclipseLink 中更改连接
我在我的应用程序中使用 EclipseLink。EclipseLink 使用一些连接池。我使用 EclipseLink 内部的。连接池在需要时创建连接,然后保留以供将来使用。
我需要在创建每个连接时对它进行一次特定的 SQL 调用,但只需要一次。我需要做的是在 oracle 上授予用户特定角色。为了安全起见,此用户具有此角色,但已禁用,需要启用它。
我不想每次从池中获取连接时都这样做,只有在创建它时才这样做。
我该怎么做?
java - JPA:如何将持久性上下文与批量更新或删除的结果同步?
ejb-3_0-fr-spec-persistence.pdf 中有一个声明,内容如下
持久化上下文与批量更新或删除的结果不同步
因此,如果我执行从表中删除行的 query.executeUpdate。这些相同的行仍然存在于另一个实体的一对多集合中。当我重新启动应用程序时,我看到幻影实体现在已从集合中删除。
那么有没有一种(不错的\简单\通用)方式将 JPA 的缓存与批量更新\删除的结果同步?
顺便提一句。我正在使用 EclipseLink,版本:Eclipse Persistence Services - 1.1.0.r3634。
谢谢,
菲尔。
java - 对 JP-QL (JPA 2.0) 中的“ElementCollection”映射字段执行“MEMBER OF”查询
是否可以对关联数组运行“成员”查询?如果是这样,语法是什么样的?显而易见的解决方法是原生查询,但是对于所有的连接等,这会变得非常混乱。我想测试地图的键集、值集合或条目集中是否存在对象。可能类似于以下内容:
提供者无关的代码可能要求太多;Eclipselink 支持这个吗?
jdbc - 如何使 JDBC 驱动程序可插入 OSGi 环境?
我有一个 OSGi 项目,其中包含一个带有 JPA 注释域模型的包和另一个使用 Eclipselink 作为持久性提供程序的包。后者实例化EntityManager
使用配置参数来确定 JDBC 驱动程序的类名。
现在,包含模型的捆绑包需要能够看到 JDBC 驱动程序,我认为这是因为 eclipselink 使用模型类的类加载器来加载它。这有一个不需要的副作用,我需要Import-Package
在模型的包中明确声明一个指令来拉入驱动程序。然后通过 OSGi 交换驱动程序不再容易(我需要重新生成清单),这首先违背了使用 OSGi 的目的。
由于 JDBC 驱动程序都实现了相同的接口,我想做的是将数据库驱动程序放在它们自己的包中,将它们注册到 OSGi 容器中的通用接口名称下,并让 eclipselink 使用任何可用的东西。但我看不到如何做到这一点,因为似乎驱动程序是由 eclipselink 实例化的,这意味着我不能在其他地方实例化它并且让 eclipselink 忘记实际的类名。
这似乎是一件非常典型的事情。我想那里已经有解决方案了?
今年早些时候 Oracle 的 Shaun Smith 的这篇文章表明可能没有,但它也表明对它的需求似乎是相当真实的。
osgi - eclipselink 无法自动检测实体类的原因是什么?
我在 OSGi 容器中运行 eclipselink,我的实体类在它们自己的包中。
我反复遇到 Eclipselink 无法自动检测实体类的问题,导致“Xyz 不是已知的实体类型”消息。调试起来很痛苦,我有点无奈的方法是或多或少地随机调整配置文件,直到它工作为止。
我希望我知道一种更系统的方法,但我似乎对问题的可能原因知之甚少。他们可能是什么?是否概述了自动检测中发生的情况以及它的工作需要什么?
因此,如果您自己遇到问题并且能够确定一个具体原因,请在此处发布,或者在您已经看到它时投票。这样,我们可以生成按频率排序的典型问题列表。我将添加我实际解决的问题。
我知道的事实:
- eclipselink 使用 OSGi 扩展器模式来监听捆绑注册,然后设置它们
- 它应该使用定义持久性单元的捆绑包的类加载器,如果您使用的是
persistence.xml
for 配置,则这是该文件应该位于的捆绑包。
jpa - 以编程方式建立所有关系 CascadeType.MERGE
我们已经在我们的应用程序中严格定义了哪些关系是 CascadeType.MERGE。这会影响我们的版本检查(乐观锁定)。所以,我们的 CascadeType 定义有时有 MERGE,有时没有。这对我们的 OLTP 应用程序来说非常有用。但是,我们还需要加载关系可能不同的数据(可以离线批量处理)。我想做的是告诉 jpa(或 eclipselink)在这个批量加载期间将每个关系视为 CascadeType.MERGE。换句话说,我希望 eclipselink 在批量加载期间忽略我们的注释。这可能吗?