jpa

JavaEEのJPAで、同じCriteriaなのに違うSQLが生成されることがある

JPAで、同じCriteriaなのに違うSQLが生成されることがあって、毎回違う結果を返してくるのでハマりました。 EclipseLink 2.3.2です。 同じテーブルをさすRootを2つ作ると、場合によって解釈が違うという感じです。 つまり CriteriaQuery cq = em.createQuer…

JPA+MySQLでの文字化けにはまった件

JPA+MySQLで、登録時はちゃんと登録できて、一覧でもちゃんと表示されてるのに、ある程度時間がたつと文字化けしているという現象が起きてちょっとはまってた。 MySQLの設定を見直したりしてたのだけど、これもしかしてJPAのキャッシュの問題じゃないか、と…

Java Persistence 2.0

id:satonaokiさんのひとこと 「地味だね〜、JPA1.1でいいじゃん」 同感。 ふつうに使ってて変わるのはCriteriaの導入、並び順、バリデータくらいかと id:koichikさんなら「いままでのを0.9にして、次のを1.0にしろ」というかも。 マッピングの拡張 埋め込み…

エンティティ定義だけさらに独立すればいいんじゃなかろうか

JPQLもEntityManagerも使ったり使わなかったり、でもエンティティ定義だけはJPAでってことが多いというくらいなら、JPAからエンティティ定義だけ独立すればもっと軽い仕様になってよい。 とか思ってみた。

JPAを教えるときに一番難しいこと

「なんでこんなことするん?SQL+JDBCでええやん」という質問に答えること。

JPAは単独で使ってもあんまり便利じゃない

JPAはマッピングフレームワークなので、SQLを書かなくする仕組みではなくて、SQLの結果をオブジェクトにマッピングしたり、オブジェクトをSQLに乗せることを自動化してくれる仕組みです。 なので、JPA使ってもSQL書かなくなるわけではありません。JOINを書か…

TopLink + Derby(JavaDB)でdefault値が使えない?

こういう感じでdefault値を指定したとする。 create table TEST( id integer primary key, dt timestamp default CURRENT_TIMESTAMP); マッピングがこんな風になる @Entity public class Test{ @Id @Column Integer id; @Column @Temporal(TemporalType.TIME…