可以休眠自动生成未记录的表吗?

时间:2015-04-23 09:18:32

标签: java hibernate postgresql

@Entity
class MyEntity {
}

hibernate.hbm2ddl.auto=update

CREATE unlogged TABLE的表不存在时,hibernate是否可能生成CREATE TABLE语句而不是MyEntity

3 个答案:

答案 0 :(得分:1)

我认为您可以通过继承相关的Postgres方言并覆盖getCreateTableString()方法来完成此操作。

public class CustomPostgresSQLDialect extends PostgresSQLxxDialect{

    @Override
    public String getCreateTableString() {
        return "create unlogged table";
    }   
}

显然把它设为你的方言:

<property name="hibernate.dialect" value="org.foo.CustomPostgresSQLDialect "/>

答案 1 :(得分:1)

我认为@Entity@Table中没有将这种选项传递给DBMS的参数。但是在hibernate的jira中找到了this feature request,它涵盖了你的用例,也许你想投票给它。

无论如何,您可以尝试在hibernate配置中添加auxiliary database object来运行ALTER TABLE MyEntity SET UNLOGGED,这是我能想到进行DDL修改的最简单方法。

答案 2 :(得分:0)

您应该使用更新而不是创建

这很有帮助:

Hibernate hbm2ddl.auto default value