我有这样的hibernate.cfg.xml:
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:postgresql://host:5432/app-dev</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="hbm2ddl.auto">validate</property>
...many mappings
</session-factory>
问题是它正在尝试更新我的数据库架构,但我想禁用该功能。
从我的应用程序中记录:
2015-08-29 16:29:57 ERROR SchemaUpdate:261 - HHH000388: Unsuccessful: create table myschema.public.mytable (id int4 not null, count int4, anotherid int4, onemoreid int4, primary key (id))
2015-08-29 16:29:58 ERROR SchemaUpdate:262 - ERROR: syntax error at or near "-" <<(mydatabase name contains "-" sign)
职位:27
我还尝试将hbm2ddl.auto标记留空或在其中包含'none'值。
答案 0 :(得分:2)
完全删除属性<property name="hbm2ddl.auto">validate</property>
。
默认情况下,所有选项都将为false,而hibernate将不会尝试进行任何更新。
答案 1 :(得分:0)
删除Hibernate hbm2ddl.auto
默认为Hibernate
没有做任何事情。
来自docs
hbm2ddl.auto选项打开自动生成数据库 模式直接进入数据库。这也可以关闭 删除配置选项,或使用重定向到文件 SchemaExport Ant任务的帮助。
答案 2 :(得分:0)
Validate是hbm2ddl.auto的默认属性,即使你没有指定hbm2ddl.auto属性,它也是默认的validate。其次没有“无”这样的价值,只有4种选择:
validate-它只是检查表及其列是否存在于数据库中,或者是否存在表,如果表不存在或任何列不存在而不是抛出异常。
create - 如果值为create而不是hibernate,则删除该表(如果已经存在),然后创建一个新表并执行该操作,这不会实时使用,因为旧数据会从数据库中丢失。 / p>
update - 如果值是更新,则hibernate使用现有表,如果表不存在,则创建新表并执行操作。这主要是经常实时使用,建议使用。
create-drop - 如果值为create-drop而不是hibernate创建一个新表,并且在执行操作后删除了表,则在测试hibernate代码时使用该值。
由于 Njoy Coding