S2JDBCでの複合キー

Hibernateは複合キーを使う場合何かと面倒だったので複合キーにはすごい抵抗が合ったんだけど、S2JDBCの複合キーはすっごい簡単。

Entityを以下の様すると、


@Entity
public class Hoge {
@Id
public Integer id1;
@Id
public Integer id2;
@Id
public Integer id3;
@OneToMany(mappedBy = "hoge")
public List lines;
}

@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カラムを持つようにしてたんですが、持つか持たないかちょっと悩み出した。