2016-10-10 3 views
1

У меня есть @Entity для представления MySQL в проекте JPA/Hibernate. Во время разработки я использую javax.persistence.schema-generation.database.action=drop-and-create, чтобы быстро сбросить мою базу данных. Это должно игнорировать приведенное выше представление, оно будет создано позже в скрипте инициализации.JPA отключить создание схемы для одного объекта

Как это можно достичь?

ответ

1

Hack, чтобы решить эту проблему (и частые проблемы Отключающих во drop-and-create) выглядит следующим образом:

  1. Капля и воссоздать базу данных
  2. Сделать JPA создать схему (в том числе ошибочно создания представления в виде таблицы)
  3. Оставьте таблицу просмотра в сценарии загрузки данных и создайте представление.

Config:

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"); 

, прежде чем-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 ... 
Смежные вопросы