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