У меня есть весенняя загрузка, весенние данные, спящий режим и ms sql,
но со стратегией create-drop спящий режим создает таблицу на основе более старой реализации моего класса @Entity.
Класс сущности так:
@Entity
public class User {
@Id
@GeneratedValue
private int id;
@Column(unique = true, nullable = false)
private String name;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String email;
@Column(nullable = false)
private boolean active = false;
@Column
private String activationUUID = UUID.randomUUID().toString();
//getters and setters
}
В application.properties связанный конфиг:
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto=create-drop
Но что я вижу в стандартном выводе после запуска приложения:
2018-03-17 12:08:10.973 INFO 876 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.SQLServer2008Dialect
2018-03-17 12:08:11.473 INFO 876 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
Hibernate: drop table [user]
Hibernate: create table [user] ([id] int identity not null, [account_activationuuid] varchar(255), [account_active] bit not null, [email] varchar(255) not null, [name] varchar(255) not null, [password] varchar(255) not null, [registration_date] datetime2 not null, primary key ([id]))
Hibernate: alter table [user] add constraint UK_gj2fy3dcix7ph7k8684gka40c unique ([name])
2018-03-17 12:08:11.488 INFO 876 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete
Обратите внимание, что я удалил @Columnregistration date, переименовал accountActivationUUID в activationUUID и переименовал accountActive в active.
Тем не менее, я вижу старую схему в stdout, и она даже хранится в базе данных.
Итак, мои вопросы:
1) Откуда взялась эта старая схема?
2) Есть ли в спящем режиме кеш схемы?
3) Как заставить его каждый раз генерировать новую схему - точно представлять классы @Entity в моем коде?
4) Почему в stdout указано использовать диалект 2008 года, хотя я указал диалект 2012 года в application.properties?
Я попытался сделать недействительным кеш в IntelJ, перезагрузив компьютер и базу данных, чтобы найти файл со старым определением схемы на жестком диске, но ничего из этого не сработало.
Спасибо за любой ответ :)





Я нашел проблему и сумел заставить ее работать.
Проблема была в pom.xml, были некоторые дубликаты и некоторые несуществующие зависимости, поэтому запуск просто падал до последнего успешного запуска.
Вот как он использовал старую схему.