我正在迈向JPA(eclipselink)开发的第一步,我想知道是否有任何好的做法可以帮助反映实体进入数据库的变化,而无需重新创建整个数据库。
在我的情况下,我有超过30个实体,其中一些是“正确”定义的,并且已经在数据库中保存数据行,但我已经发现我在使用int定义其他实体时犯了一个错误键入而不是长键,最糟糕的是其中一些实体被其他实体映射,这意味着它们被用作外键...所以我想知道是否有任何“正确”的方法无需重新创建整个数据库即可解决这个问题。重新创建数据库将迫使我重新填充已经填充的表格和腰部的行很多时间。
先谢谢你 乔治
答案 0 :(得分:2)
整数和长整数映射到数据库中的数字列。更改实体中的类型不会改变任何内容。您可能必须更改数据库中列的精度,以使该数字足够大以接受任何长值,但使用alter语句在SQL中执行此操作非常简单。
JPA只是一种访问数据库的方法。该数据库不应由JPA引擎创建。你可以这样做,但你没有被迫这样做。您可以使用SQL对数据库执行所需的操作,并使用Java代码执行任何操作。如果它们在运行应用程序时都映射在一起,它将起作用。
答案 1 :(得分:0)
您可以通过配置EclipseLink来自动更新当前架构以反映您在模块中所做的修改:
<property name="eclipselink.ddl-generation" value="create-tables" />
对于模型的主要修改,它不保证对模式的正确更新,但对于较小的模式,它应该可以正常工作。