hibernate関係のメモ
Hibernate. Everything data. - Hibernate
hibernateを使ってあるDBから他のDBへデータを変換しながら
転送するようなソフトを書く機会があったのでそのときにハマったことなどを覚え書き。
psqlでUnicode
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をリバースエンジニアリングで使うときは注意。