Mam problem ponieważ w logach dostaję, że Hibernate stworzył mi tabelę natomiast fizycznie w bazie jej nie widzę :
2019-03-02 10:03:34.956 INFO 13084 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.3.7.Final}
2019-03-02 10:03:34.956 INFO 13084 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-03-02 10:03:35.112 INFO 13084 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2019-03-02 10:03:35.487 INFO 13084 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
Hibernate:
drop table Mass if exists
Hibernate:
create table Mass (
id integer generated by default as identity,
clayCode varchar(255),
clayName varchar(255),
kaoliniteCode varchar(255),
kaoliniteName varchar(255),
quartzCode varchar(255),
quartzName varchar(255),
weight double not null,
primary key (id)
)
2019-03-02 10:03:36.190 INFO 13084 --- [ main] o.h.t.schema.internal.SchemaCreatorImpl : HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@53d2d002'
2019-03-02 10:03:36.206 INFO 13084 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-03-02 10:03:36.628 INFO 13084 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-03-02 10:03:36.674 WARN 13084 --- [ main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-03-02 10:03:36.983 INFO 13084 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2019-03-02 10:03:36.999 INFO 13084 --- [ main] pl.dawydiuk.Foundry.FoundryApplication : Started FoundryApplication in 6.34 seconds (JVM running for 7.368)
Konfiguracja :
@Configuration
@EnableTransactionManagement
@Slf4j
public class DaoConfig {
@Bean
public DataSource dataSourceH2() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver"); // org.h2.Driver
dataSource.setUrl("jdbc:h2:mem:dev;DB_CLOSE_ON_EXIT=FALSE"); //jdbc:h2:tcp://localhost/~/test
dataSource.setUsername("konrad"); //sa
dataSource.setPassword("");//abc
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSourceH2) {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSourceH2);
JpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(hibernateJpaVendorAdapter);
em.setPackagesToScan(new String[]{"models"});
em.setJpaProperties(additionalProperties());
return em;
}
Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.format_sql", "true");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
return properties;
}
@Bean
@Primary
public SessionFactory sessionFactory(EntityManagerFactory entityManagerFactory) {
if (entityManagerFactory.unwrap(SessionFactory.class) == null) {
throw new NullPointerException("factory is not a hibernate factory");
}
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
return sessionFactory;
}
@Bean
public PlatformTransactionManager transactionManager(
EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
@Bean//bean ktory tlumaczy wyjatki na klasy Springa
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
}
Encja:
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@Entity
public class Mass{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private double weight;
@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "name", column = @Column(name = "clayName")),
@AttributeOverride(name = "code", column = @Column(name = "clayCode"))
})
private Clay clay;
@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "name", column = @Column(name = "quartzName")),
@AttributeOverride(name = "code", column = @Column(name = "quartzCode"))
})
private Quartz quartz;
@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "name", column = @Column(name = "kaoliniteName")),
@AttributeOverride(name = "code", column = @Column(name = "kaoliniteCode"))
})
private Kaolinite kaolinite;
}