0

我们正在使用一个非常基本的 JPA 实现,它应该从我们的模型中一致地创建表。
我相信我们正在使用 EclipseLink 或 TopLink(无论哪一个是最新的 Netbeans/Glassfish 的默认设置)。问题是,这些表是用不一致的大小写和列乱序创建的。对我来说,它将"User"表创建为“用户”,而对于我团队的其他成员,它会创建"USER".

我试过使用@Table annotation (@Table(name="USer")),但它不起作用。

我们如何让 EclipseLink 生成一致的表名?坦率地说,对于这样的框架来说,这似乎是一个相当业余的错误。

子问题:据我所知,这是一个问题的原因是因为默认情况下 EclipseLink 没有管理模式/数据迁移的默认方式。我们处理它的方式是编写一堆INSERT INTO's来引导我们在数据库中需要的对象,并在每次模式更改时删除并重新创建表。我知道这不是传播模式更改的最佳实践——有谁知道这在标准 JPA 实现中通常是如何处理的?

谢谢。

4

2 回答 2

2

默认情况下,EclipseLink 使用全部大写的表名,用户类将是 USER。

如果您指定名称为“USer”的@Table 注释,则该表将被创建为“USer”。

也许您正在使用自己的脚本来创建表,或者您的数据库正在根据操作系统或其自己的设置更改大小写。你用的是什么数据库?

如果在 EclipseLink 中启用日志记录,它将显示它正在执行的确切 DDL(如果它正在执行 DDL)。

在 EclipseLink 2.4 中,还有一个“create-or-extend-tables”DDL 生成选项来更改现有表。

于 2012-10-10T12:39:37.683 回答
0

我们从来没有找到任何好的答案。幸运的是,我们找到了用于更新表格的方法的解决方法,它不关心大小写。

于 2012-10-24T23:23:55.210 回答