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:
- zmiana domyślnej nazwy na nazwę z _
- 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
niezdecydowany