S2JDBCでの複合キー
Hibernateは複合キーを使う場合何かと面倒だったので複合キーにはすごい抵抗が合ったんだけど、S2JDBCの複合キーはすっごい簡単。
Entityを以下の様すると、
@Entity
public class Hoge {
@Id
public Integer id1;
@Id
public Integer id2;
@Id
public Integer id3;
@OneToMany(mappedBy = "hoge")
public Listlines;
}@Entity
public class HogeHoge {
@Id
public Integer id1;
@Id
public Integer id2;
@Id
public Integer id3;
@Id
public Integer id4;
@OneToOne
@JoinColumns( {
@JoinColumn(name = "ID1", referencedColumnName = "ID1"),
@JoinColumn(name = "ID2", referencedColumnName = "ID2"),
@JoinColumn(name = "ID3", referencedColumnName = "ID3") })
public Hoge hoge;
}
以下で関連も取得できます。
select().from(Hoge.class).where(where).innerJoin("lines").getSingleResult();
今まではO/Rマッピングを使う際は無理矢理IDカラムを持つようにしてたんですが、持つか持たないかちょっと悩み出した。