gpt4 book ai didi

java - Eclipselink 生活在过去,DDL 不反射(reflect)实体

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:00 27 4
gpt4 key购买 nike

奇怪的东西...我很高兴使用 EclipseLink/JPA 2 作为我的持久性单元的提供程序一段时间(后面有 MySQL RDBMS)。我关闭了 DDL-drop/create,因为我想在数据库中保留记录,并且实体没有任何更改。

现在我刚刚对一个实体进行了一些更大的更改(添加一些属性、重命名/重新键入其他属性、将先前嵌入的对象平面导入到该实体中等)。我打开 DDL-drop/create,重新部署几次,然后......没有任何变化!

EclipseLink 实际上根据信息创建(并重新创建)SQL 表!就好像它在某处有一个 Java 类的副本,而忽略了我刚刚更新的那个......

更疯狂的是,之前嵌入的对象不见​​了。我删除了类文件。 Eclipselink 仍然在先前嵌入类的表中创建属性。

我在 GlassFish server.log 中没有看到任何异常。我删除并重新创建了持久性单元,没有任何变化。有任何想法吗? (请告诉我是否应该发布任何代码/日志条目,我将更新这篇文章。)

更新:eclipselink.logging.level设置为FINEST后,我仍然没有看到任何异常。 DDL 脚本已创建(其中包含错误的列)并在数据库上愉快地执行(当然创建了错误的列)。在日志中,我看到 EclipseLink 正在谈论不再存在的字段:

[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The alias name for the entity class [class mvs.entity.Shopper] is being defaulted to: Shopper.|#]

[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The column name for element [field msisdn] is being defaulted to: MSISDN.|#]

[#|2010-09-22T17:04:11.392+0200|CONFIG|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit.ejb_or_metadata|_ThreadID=20;_ThreadName=Thread-1;|
The column name for element [field imei] is being defaulted to: IMEI.|#]

在本例中,mvs.entity.Shopper 是类。 msisdn 是一个现有字段,但 imei 不再存在。不知道 EclipseLink 从哪里获取信息...

顺便说一句,我将 eclipselink.weaving 设置为 false,因为它导致了延迟加载问题。这可能有关系吗?

更新2:按照戈登的建议,我寻找了该实体的旧副本,但没有找到。在新的 GlassFish 上部署应用程序没有显示上面的行为;相反,映射正确完成,就像 DDL 创建一样!雅皮:)

我唯一的结论是,即使在取消部署之后,旧副本也必须保留在 GlassFish 中的某个位置......这有意义吗?

最佳答案

您的类路径上有一个带有旧映射的 orm.xml 文件,或者正在部署该类的旧版本。 EclipseLink 无法在部署之间“存储”类。尝试反编译部署中的类文件,看看它是否有您的更改。

关于java - Eclipselink 生活在过去,DDL 不反射(reflect)实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com