hibernate関係のメモ

Hibernate. Everything data. - Hibernate
hibernateを使ってあるDBから他のDBへデータを変換しながら
転送するようなソフトを書く機会があったのでそのときにハマったことなどを覚え書き。

psqlUnicode

PostgreSQLの話。
UnicodeのDBからUnicodeのDBへデータを転送しているのにpsqlで見るとなぜか文字化けしている。
JDBCが原因だと決め付けていたが、PAGERがUnicodeに対応していないだけだった。
psqlを起動しているときに

\encoding EUC_JP

で文字化けせずに見えるようになる。

シーケンスのデフォルト

PostgreSQLの話。

CREATE TABLE company (
    name character varying(40),
    company_id integer DEFAULT nextval('seq_company_id') PRIMARY KEY
);

こうするとcompany_idは自動で増加する。便利。

シーケンスの自動生成

hibernateリバースエンジニアリングで使うとシーケンスを自動で認識しない。
.hbm.xmlファイルを開いて


    
    

となっているところを


    
    
        seq_company_id
    

とすると、シーケンスの設定が効くようになる。
(seq_company_idという名前のシーケンスを作っておく)

主キー制約とhibernate

hibernateリバースエンジニアリングで使うときに
対象のテーブルに1つも主キーがないといろいろ面倒な思いをする(主キーが2つあっても面倒)
マッピングオブジェクトを作ったときに、Table.javaとTableId.java
の二種類ができるのはTableに主キーが1つもないか2つ以上あるためである。
特に主キーがないときにはgetCriteria()でデータを取ってきても正しくデータを取れない。
hibernateリバースエンジニアリングで使うときは注意。