我正在JOnAS(Java环境)中使用带有eclipselink2.3提供程序的Postgresql数据库。我的配置是:
的persistence.xml:
...
<property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.target-database" value="POSTGRESQL"/>
...
Postgresql版本
Version : 8.4.11-0squeeze1
JDBC驱动程序版本是
postgresql-8.4-703.jdbc3.jar
当数据库为空时,没有问题。
我的问题是当eclipselink.ddl-generation设置为create-tables并且表已经存在于数据库中时,会发生错误,并且进程不会继续执行下面的语句here。
有人看到了解决方案吗?
答案 0 :(得分:2)
我没有看到任何property可以防止你的情况下出现throwin错误。所以我建议如下。您应该有3个不同环境的3个persistence.xml文件:开发,测试和生产。
在开发环境中,您希望使用干净的数据库,所以
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
与测试环境相同,但在这种情况下,我会使用DBUnit用测试数据填充数据库。
在制作中你不想搞乱数据库结构,所以
<property name="eclipselink.ddl-generation" value="none"/>
是正确的选择。
如果您使用ant或maven,这样的配置相当容易实现(您可能会在网上找到示例,因为这是非常标准的方法)。
我想你不会喜欢这个答案;),因为这看起来有很多额外的工作,但从长远来看,干净的配置和分离会有所回报。
答案 1 :(得分:0)
如果表已存在,则“create-tables”选项不会失败。它会记录错误,但继续。 如果您不想看到错误,可以关闭日志记录。
你得到什么错误?