Hibernate nie tworzy tabeli choć loguje takie zdarzenie

0

Zaistniała pewna forma magii w moim projekcie....

Mamy sobie encję

@Entity
@Table(name = "commission_template")
public class CommmissionTemplate {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    private Double min;

    private Double max;

    private Double value;

    private boolean active;

    @Convert(converter = LocalDateToSqlConverter.class)
    private LocalDate start;

    @Convert(converter = LocalDateToSqlConverter.class)
    private LocalDate end;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(name = "commission_template_commission_type",
            joinColumns = {@JoinColumn(name = "commission_template_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "type_id", referencedColumnName = "name")}
    )
    private CommissionType type;

// getters/setters etc.
}

i konfigurację

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="${db.dialect}"/>

W trakcie uruchomienia aplikacji mamy

Hibernate: create table commission_template (id int8 not null, active boolean not null, end timestamp, max float8, min float8, start timestamp, value float8, primary key (id))
Hibernate: create table commission_template_commission_type (type_id varchar(255), commission_template_id int8 not null, primary key (commission_template_id))

I teraz odpalam sobie pgAdmina i oczywiście tabeli commission_template nihuhu... Mogę narzeźbić DDLa z palca, ale to wymagało by wdrożenia jakiegoś dbupa czy czegoś w tym rodzaju by zarządzał zmianami. Jako, że model jest dość żwawy i jeszcze się zmienia to jednak chciałbym mieć to "out-of-box" (i nie mieć problemów z testami).

co dotychczas zrobiłem:

  1. zmiana domyślnej nazwy na nazwę z _
  2. zmiana nazwy na prowizje_szablony

i jeszcze jedno, w czasie wyłączenia aplikacji hibernate loguje, że tabela jest dropowana.

dla zainteresowanych link do tego pytania na SO > http://stackoverflow.com/questions/27282536/hibernate-does-not-create-table-some-converters

0

Tak, wiem, że to oczywiste, ale jesteś pewien, że baza do której łączy się Hibernate i baza którą otwierasz w pgadminie to ta sama baza?:P

0

A tak z ciekawości, jaki dajesz dialect? spróbuj loggera ustawić na TRACE, 'org.hibernate'

0

<db.dialect>org.hibernate.dialect.PostgreSQL9Dialect</db.dialect> ciągnięty z ustawień profilu w mavenie.

0

Wiem że to żadne rozwiązanie ale czy próbowałeś klasycznego podejścia -> skracajmy kod aż trafimy na problem? :) Czyli wyrzuć to co uważasz za źródło problemu i zobacz jaki jest efekt. Następnie wyrzucaj kolejne kawałki aż trafisz na ten który powoduje problem. W ten sposób dojdziesz do minimalnej konfiguracji powodującej błąd, którą łatwiej będzie debugować :)

0

Głupsza rzecz, ale opiszę na blogu bo to przechodzi ludzkie pojęcie. Dla kumatych - popatrzcie na encję i zastanówcie się dlaczego nie tworzymy tabeli user.

1 użytkowników online, w tym zalogowanych: 0, gości: 1