Hibernate nie tworzy tabeli choć loguje takie zdarzenie

Hibernate nie tworzy tabeli choć loguje takie zdarzenie
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

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

Mamy sobie encję

Kopiuj
@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ę

Kopiuj
<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

Kopiuj
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


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
niezdecydowany
niezdecydowany
@Koziołek jak nie dostałeś odpowiedzi na SO, od 22min, to sprawa jest ciężkiego kalibru ;D
Koziołek
no widzę... Rzeczywiście sprawa jest dość nietypowa... Osobiście obstawiam dwa te same konwertery w ramach jednej klasy...
airborn
mam dwa identyczne konwertery w jednej klasie i nie mam problemów z takim setupem
airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
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

Koziołek
no weź mnie nie obrażaj... co?
airborn
Oj, wiesz, że zawsze trzreba sprawdzić 5 razy ;) A serio, co się dzieje, gdy do tak niby poprawnie stworzonej bazy próbujesz coś zapisać? Hb nie wywala się? Na SO pisałeś też, że szukasz winy w konwerterach, uzywam konwerterów do java 8 LocalDateTime i działa bez problemu (Hibernate 4.3.7 i postgresql 9.3-1102-jdbc41)
Koziołek
nic bo nie mogę wstać aplikacji. Nie można utworzy EntityManager-a.
NoZi
  • Rejestracja:około 16 lat
  • Ostatnio:22 dni
0

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


Hate the sin, love the sinner
edytowany 2x, ostatnio: NoZi
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

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


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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ć :)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
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.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
NoZi
bo jeśli nie określisz schemy, to będziesz próbował się mapować na tą domyślną postgresa?
niezdecydowany
niezdecydowany
nie widzę publicznego konstruktora ?
sihox
Czyżby value?
Koziołek
nope. Z tym sobie radzi. Poczytaj aktualizację na SO.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.