问题标签 [toplink]
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 - 未知实体类错误消息,即使实体标记有 @Entity 注释
我正在使用 Netbean6.9.1 和 JPA EclipseLink 构建 REST Web 应用程序。
我面临的问题是,即使我的实体类 MasatoTable 标有 Entity 注释,我也会收到错误消息:
问题是当我从 NetbeanIDE 重新启动 GlassFish3 服务器时,它工作了一段时间,不知何故,错误开始出现。我曾经使用 Toplink Essential 并且没有任何问题,但我已更改为 EclipseLink 并重新定义了 persistence.xml(如下所示)并且这个问题开始了。但我没有看到任何我能想到的代码错误..
MasatoTable.java
持久性.xml
看起来像同样的问题,但该票的解决方案是从 Eclipselink 回滚到 Toplink。有没有人在不回滚到toplink的情况下解决了这个问题?
热部署后未知实体 bean 类:netbeans 6.9 + glassfish 2.1 + eclipselink jpa 2.0
更新
就我对这种情况的研究而言,看起来该错误已得到解决和修复?
https://bugs.eclipse.org/bugs/show_bug.cgi?id=288141
我没有足够的知识来理解整个事情,但我发现的事实很少:
Netbean6.9.1 提供 EclipseLink 2.0.1 而最新版本是 2.2.0
我下载了最新版本并将它们放入 lib 目录然后重新部署但没有运气,问题仍然存在。不确定我是否以错误的方式做事。
詹姆斯评论后更新
下面是我用来创建单例 EntityManagerFactory 的类以及它是如何使用的。
如何使用:
通过查看我的代码,我认为......我没有关闭 EntityManagerFactory(虽然我最终关闭了 EntityManager)
我还发现"unknown entity bean class"
主题中的错误肯定会通过以下操作显示出来。
通过 Netbean 部署 Web 应用程序(这将打开浏览器)
在 Netbean IDE 中更改一些代码并保存。然后,只要您按下保存按钮,Netbean 就会自动重新部署(这是否称为“热部署”???)
返回浏览器并执行一些操作,例如添加一些涉及 EntityManager 的数据。
看起来错误是因为我在热部署时没有关闭实体管理器工厂?我必须调查。
java - 可嵌入类中的 ManyToOne 列
我有两个实体嵌入(@Embedded
) Adress 可嵌入。在 Adress 类中有一个指向实体位置的属性。在 Adress 类中,我在其上方放置@ManyToOne
和@JoinColumn(...)
注释。现在我得到这个错误:
异常描述:此描述符中不存在表 [persons]。描述符:RelationalDescriptor(com.wordpress.aiids.voeder.model.Location --> [DatabaseTable(locations)])
这@JoinColumn
是导致麻烦的注释:
这是可嵌入类的完整代码。
http://aiids.pastebin.com/G1sijNBL
我是否通过将这些注释放在那里做错了什么或者这个错误的原因是什么?
解决方案!
解决方案是referencedColumnName
必须指向实体 Gemeente 的主键,它是“邮政编码”而不是“gemeente”。
java - 使用 EJB 2.0 和 JPA (Toplink) 问题存储和刷新对象
从我的客户端应用程序中,我想在一个 EJB 方法中调用存储和刷新,而不是对两个方法的两次调用。我做了一个 EJB 方法,让它调用其他两个 EJB 方法,看起来很简单,像这样:
问题是 Toplink 不允许我读取数据并且在刷新部分抛出异常:
异常 [TOPLINK-7123] 异常描述:已在此 UnitOfWork 上调用了成功的 writeChanges()。由于提交过程已经开始但尚未最终确定,现在唯一支持的操作是提交、commitAndResume、发布、任何非对象级查询或 SQLCall 执行。此时不允许执行 executeQuery(ObjectLevelReadQuery) 操作。
有什么建议么?
编辑:更改方法签名。
java - java web应用程序缓存数据,如何阻止它使数据不陈旧!
你好,我有问题。我的(我猜的)持久层正在缓存我的结果,所以当我从我的应用程序外部更新数据库时,数据仍然是陈旧的。
但是,它只缓存了一半的时间,我希望这是有道理的,
我有一堂课
现在,如果我更新任何不是对类对象的引用的数据,例如“provincename”,那么数据在我的应用程序中就可以了,并且会立即更新。但是,像“建筑物”这样的内部对象没有,我无法弄清楚如何,如果我像重新部署我的应用程序一样进行硬刷新,那么数据是新鲜的。
我从这里的数据库中获取我的省份:
那么我如何去强制它也使该类的内部对象,即“建筑物”“人”也更新。
我的持久层是 toplink 的必需品,我修复了我之前没有数据更新的问题。以及这里的第一篇文章(这是另一个堆栈溢出页面)
谢谢你的帮助。我希望我能很好地解释我的问题
[编辑:就像我没有使用这个框架一样,加入数据库中的表并将数据重新填充到新变量中会更容易,但我没有]
java - 获取持久性单元名称
如何在 Java 中获得持久性单元的名称?我有一个包含许多单元的 persistence.xml,所以我想控制使用哪个单元来创建我的 EntityManager。
有类似getPersistenceName
or的方法smth
吗?我已经搜索了一段时间,但没有找到任何有用的东西。
toplink - 来自 Toplink 表达式的 SQL 查询
我有一个 oracle.toplink.expressions.Expression 表达式对象,它是使用 oracle.toplink.expressions.ExpressionBuilder 创建的。我想找到它的等效 SQL 查询(比如从员工 emp 中选择 emp.empname,emp.empId),它最终将被触发以获取数据。我想找到它的等价 Statement/PreparedStatement 或任何可以帮助我获得即将被触发的原始 SQL 语句的东西。
例如,以下是 toplink 表达式:
我想获得等效的 SQL 查询:
请让我知道是否有任何 API 可以获取溶胶。我尝试了 DatabaseQuery 的实现类,但找不到任何可以实现这一点的方法。
下面是我的 toplink 表达式:
我想要 SQL 等价物
谢谢,阿迪西亚。
jpa - 在 Toplink Essentials 中控制 DDL 生成
我在使用 Toplink Essentials 的 DDL 生成时遇到了一些问题。我正在开发一个基于 Glassfish 2.1 的应用程序并使用 JPA 进行持久性。
我有一个对象图,其中 A 类的父实体拥有 B 类的一组实体。实体 B 有几种使用继承建模的风格。一种这样的风格是组合实体类 BC,它捆绑了一组其他几个 B 实体。BC 中的所有实体 B 也必须由与 B 相同的实体 A 拥有。请注意,并非实体 A 的所有实体 B 都必须是复合 BC 的一部分,它们也可以是独立的。
所以基本上这映射到以下类:
当 toplink 为此对象层次结构生成 DDL 时,它会按预期创建所有外键约束。但是,它没有为约束设置级联规则。
当我现在尝试通过对 A 实例的引用来删除整个对象图时,可能会出现 toplink 无法从数据库中正确删除该图的情况。当 toplink 在删除包含的 B 实体之前删除 BC 实体时,违反了“复合”关系的外键约束。
这种情况可以通过手动将生成的 DDL 调整为适用于生产环境的相关外键约束的 CASCADE(或 SET NULL)来纠正。然而,这在具有内存 (Derby) 数据库的测试环境中失败,其中 DDL 生成完全由 toplink 要素管理,因此导致上述约束违规。
有什么方法可以影响 DDL 生成过程,以便 toplink 要领正确设置所需的级联规则?
谢谢你的帮助!
jpa - 在 EJB 3.1 中调用远程 EJB
我需要从另一个具有相同 glassfish(3.1 最终版本)的 Web 应用程序调用远程无状态 EJB,它返回实体 Bean(JPA 2/Eclipselink)。我通过依赖注入(@EJB)在 Web 应用程序中获取 ejb 引用,但实体变为空。我用谷歌搜索,发现它可能是可序列化的问题。我在某个地方找到了这个
TopLink 要么在加载时修改实体类(“编织”它们),要么在运行时替换集合访问,以便能够检测延迟访问或修改的关系(如果没有这个或子类化或在运行时使用代理,就无法支持延迟加载)。这给我们带来了非常重要的一点:您不应该使用反射来访问实体,而只能通过其业务方法。当编织实体在服务器上序列化并在没有编织其相应实体的客户端上反序列化时,serialVersionUID 将不匹配,因为值的计算包括类字段和方法。
那么我需要在我的应用程序上进行 DTO 转换吗???
jpa - Toplink 批量读取
是他们在toplink中设置像hibernate'hibernate.batch_size'这样的属性的任何方式。这将提高获取查询的性能。
jpa - JPA:NamedQuery 的名称:未找到
我正在为 JPA 使用 Netbeans 6.9.1 和 TopLink Essentials。我已按照 JPA 连接的必要步骤进行操作。
然而,当我在特定实体中执行命名查询时。这个例外总是回到我身边
这怎么可能,我该如何解决?