PostgreSQLのSEQUENCE的なカラムのHibernateのアノテーション

| | コメント(0) | トラックバック(0)

とある理由により、以前、DerbyとかMySQLのIDENTITY的なカラムのHibernateのアノテーションでやったものとまったく同じ処理をPostgreSQLでやってみた。

基本的にはDerbyとかMySQLのIDENTITY的なカラムのHibernateのアノテーションと変わらないノリでやるんだけど、PostgreSQLはauto-incrementがないからOracleとかと同じくSequenceを使う。そうするとアノテーションの記述がちょっと変わってくる。

■auto-increment(MySQLとかDerbyとか)の場合
==============
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
public long getId() {
return this.id;
}
==============

■Sequence(PostgreSQLとかOracle)の場合
==============
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="hoge_seq")
@SequenceGenerator(name="hoge_seq", sequenceName="hoge_seq")
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
==============

実際にDB上に作ったSequenceを@SequenceGeneratorのsequenctNameに書く。
@GenerationValueのgeneratorはたぶんテキトーでいい。@SequenceGeneratorのnameと同じにしときゃいいんだと思う。ちょっと試したらいいんだろうけど、1分後には寝るので各自で試してください。筆者はめんどくさいから、実SEQと同じにしておいた。

以上、よろしくお願いいたします。

トラックバック(0)

このブログ記事を参照しているブログ一覧: PostgreSQLのSEQUENCE的なカラムのHibernateのアノテーション

このブログ記事に対するトラックバックURL: http://hirop0164.s326.xrea.com/mt/mt-tb.cgi/160

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ぴろしが2008年5月16日 02:47に書いたブログ記事です。

ひとつ前のブログ記事は「Hibernateのログ」です。

次のブログ記事は「no such file to load -- postgres」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。