我们正在使用一个非常基本的JPA实现,它应该从我们的模型中一致地创建表
我相信我们正在使用EclipseLink或TopLink(默认使用最新的Netbeans / Glassfish)。问题是,这些表是使用不一致的资本化和列不按顺序创建的。对我来说,它将"User"
表创建为“用户”,对于我的团队的其他成员,它创建"USER"
。
我已尝试使用@Table annotation (@Table(name="USer"))
,但它不起作用。
我们如何让EclipseLink生成一致的表名?坦率地说,对于像这样的框架来说,这似乎是一个相当业余的错误。
子问题:这是一个问题的原因是因为据我所知,默认情况下EclipseLink没有管理模式/数据迁移的默认方式。我们处理它的方法是编写一堆INSERT INTO's
来引导我们在数据库中需要的对象,并在每次模式更改时删除并重新创建表。我知道这不是传播架构更改的最佳做法 - 有谁知道这通常是如何在标准JPA实现中处理的?
感谢。
答案 0 :(得分:2)
默认情况下,EclipseLink对表名使用全部大写,User类为USER。
如果指定名称为“USer”的@Table注释,则该表将创建为“USer”。
也许您正在使用自己的脚本来创建表,或者数据库正在根据操作系统或自己的设置更改案例。你在用什么数据库?
如果在EclipseLink中启用日志记录,它将显示正在执行的DDL(如果它正在执行DDL)。
在EclipseLink 2.4中,还有一个“创建或扩展表”DDL生成选项来改变现有表。
答案 1 :(得分:0)
我们从未找到任何好的答案。幸运的是,我们找到了一种解决方法,用于更新表格的方式,而不关心大小写。