Java: JPA: specified twice エラー
August 31, 2009
by reciente
0 comments
JPAで
@OneToOne
@JoinColumn
を使って、JOINを張ったら、そのモデルを使って INSERT文を走らせる時に、specified twice っていうエラーが出るようになった。
SQLを見てみると、確かに同じColumnを二回指定している。
http://72.5.124.55/javaee/5/docs/api/javax/persistence/JoinColumn.html
ここを見ると、
@JoinColumn(insertable = false)
というのがあるので、それを指定したら解決。
updatable
public abstract boolean updatable
(Optional) Whether the column is included in SQL UPDATE statements generated by the persistence provider.
Default:
true
ってあるように、Modelの中身を更新すると、勝手に UPDATE文が走るので、それが嫌な人は false にしておこう。
このオプションは
@Column
にもあるので、別にJOIN限定の処理ではない。
JPAはアノテーションをモデルにいくつくっつけるかの設定次第だなぁ
Djangoも結局、キーワード引数でいくつオプション付けるか。
っていう部分は当然あるし。
まあ、そうなるよなーって思う。
そう思うから、Annotation で Model いじればなんとかなるんじゃね?って思って調べるきっかけになるし。
JPAでこれだけ色々やれるってなると、本気のHIBERNATEを使ってみたくなるなぁ
どんだけ凄いんだろう。