JPA禁用单个实体的模式创建

JPA禁用单个实体的模式创建,jpa,Jpa,我有一个JPA/Hibernate项目中MySQL视图的@Entity。在开发过程中,我使用 javax.persistence.schema generation.database.action=drop and create快速重置数据库。这将忽略上面的视图,稍后将在初始化脚本中创建该视图 如何实现这一点?解决这一问题的黑客(以及删除和创建过程中频繁出现的删除问题)如下所示: 删除并重新创建数据库 让JPA创建模式(包括错误地将视图创建为表) 在数据加载脚本中删除视图的表,然后创建视图 配置

我有一个JPA/Hibernate项目中MySQL视图的
@Entity
。在开发过程中,我使用
javax.persistence.schema generation.database.action=drop and create
快速重置数据库。这将忽略上面的视图,稍后将在初始化脚本中创建该视图

如何实现这一点?

解决这一问题的黑客(以及
删除和创建过程中频繁出现的删除问题)如下所示:

  • 删除并重新创建数据库
  • 让JPA创建模式(包括错误地将视图创建为表)
  • 在数据加载脚本中删除视图的表,然后创建视图
  • 配置:

    jpaProperties.put("javax.persistence.schema-generation.database.action", "create");
    jpaProperties.put("javax.persistence.schema-generation.create-source", "script-then-metadata");
    jpaProperties.put("javax.persistence.schema-generation.create-script-source",
        env.getRequiredProperty("script.root") + "/project/scripts/before-autocreate.sql");
    jpaProperties.put("javax.persistence.sql-load-script-source",
        env.getRequiredProperty("script.root") + "/project/scripts/init.sql");
    
    before-autocreate.sql:

    drop database if exists xxx;
    create database xxx;
    use xxx;
    
    init.sql的开始:

    drop table if exists lastinventory;
    drop view if exists lastinventory;
    create view lastinventory as ...