Migracja z oracle na postgresql problem

0

Witam

Czy wie ktoś jak najłatwiej rozwiązać poniższy problem .
Migrujemy bazę danych ok 200 tabel z danymi do postgresql . Problem pojawia się z typem boolean otóż teraz mamy character(1) i było tam przetrzymywane 0/1 natomiast postgresql przetrzymuje typ danych jako true/false i ma swój typ boolean.

Ogólnie pracujemy na glassfishu v3 czyli jako dostawce jpa mamy toplinka. Błędy pojawiają się w zapytaniach ponieważ toplink nie potrafi sobie rzutować 0 na false i 1 na true.

Najlepszym rozwiązaniem byłoby jak dla nas ustawienie w postgresql aby można było trzymać booleana w charactere(1) ... Nie wiem ponieważ osobiście nie znam tej bazy może jakieś ustawienie w properties czy settings....

Dzięki z odpowiedź

0

Dziwny problem, robię na PostgreSQL i 1 to true a 0 to false więc gdzieś indziej jest chyba przyczyna. Aż z ciekawości sprawdziłem dokumentację:
http://www.postgresql.org/docs/9.0/static/datatype-boolean.html

Nie znam się na glassfishu i nie wiem jak mapujecie wartości na linii aplikacja - baza ale może właśnie w bazie macie typ boolean a w bazie jako character przez co źle jest konstruowane zapytanie?

0

Witam używamy teraz postgresql w ver 9.2

Natomiast do tej pory true i false jest przechowywany w zmiennej character(1) to jest od migracji z oracla przyjmujący wartość odpowiednio 0/1.

Natomiast postgresql sobie z tym nie radzi więc nie wiem dlaczego tak jest ?? Może macie jakieś ustawienia włączone w każdym razie dzięki za odpowiedź

1

Czyli nie używasz boolean a używasz character(1). Inaczej się porównuje zmienne character a inaczej boolean. Zapewne źle jest tworzone zapytanie.

Jeśli masz zmienną character to wartość musisz umieścić w apostrofach przy porównywaniu, jeśli boolean to bez. Character(1) nie jest typem logicznym, nie jest boolean.

0

No tak ale rozróżnijmy 2 rzeczy przy zapytaniach eql podaje nazwe czyli false i true toplink sobie to rzutuje i jest problem bo nie potrafi tego zrobić natomiast w zapytaniach natywnych jest dobrze bo jest 0 /1 . Nie mogę też nic zapisać do booleana ponieważ ja mam tam character na bazie a on chce zapisac wyraz true / false .

0

Toplink sam mapuje sobie tabelę czy jest jakaś konfiguracja? Jeśli tak to możesz pokazać tą co dotyczy tabeli gdzie jest źle generowane zapytanie? Może pokaż jak wygląda błędne zapytanie?

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