2012-02-23 18 views
1

現在、私はOracleをデータベースとして使用するwebappを開発しています。 WebアプリケーションがSybase ASEでも動作する必要があることはすでに知っています。私のOracleデータベースはシーケンスを使用してIDを生成し、ドメインクラスをマップしてそれらのシーケンスを使用しました。私が知る限り、Sybase ASEにはシーケンスはなくアイデンティティがあります。そして、ここに私の問題があります。 OracleとSybaseで動作するコード/設定の処理方法。ドメインごとにIDの「条件付きマッピング」が行われます。Grails - 条件付きマッピング

すでにマップされているデータベース以外のデータベース用にwebappをビルドするたびに、コメントを付けたり、コメントを外したりしたくないだけです。 誰に何をすべきか考えてもらえますか?

OracleとSybaseの別の違いはマッピングに影響します(私はdbCreate = "create"を使用してデータベース構造を生成しません)。この時点で私は何も見ません。 経験がありますか?


EDIT: それは両方のデータベースのための1つのマッピングを行うことができないということが判明しました。私のOracle構造体は、列名と表名に引用符を使用します。また、Sybase ASEでは引用符を使用できません。特定のプラットフォームでwebappをビルドするときに、私の(いいやかっこいではない)解決策が(コメント/コメント解除)マッピングを変更しています。

Btw私はGrailsの巨大なファンであり、このマッピングのことは欠点のようです。私が "純粋な" Hibernateを使用していた場合、xmlファイルに2つのマッピングがあり、基礎となるデータベースに応じてそれらを変更します。 Grailsは2つのマッピングを持つ可能性はありません。

答えて

1

grailsがid生成のためのコードマッピングを設定できるかどうか分かりませんが、シーケンスやIDを使用する必要はないと思います。他のhibernate id generatorの方針:http://grails.org/doc/1.3.7/ref/Database%20Mapping/id.htmlを使用してください。

EDIT:

すべてジェネレータインターフェイス org.hibernate.idを実装:

私はそれがhttp://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-idからデータベースの容量に記載の使用配列またはidentites可能で見出さHibernateのドキュメントを確認。 IdentifierGenerator。これは非常にシンプルなインターフェースです。 一部のアプリケーションでは、独自の 実装を提供することもできますが、Hibernateは組み込みの 実装を提供しています。

...ネイティブ

が 基盤となるデータベースの性能によりidentity、sequence、hiloのいずれかを選択し は組み込みのジェネレータには以下のショートカット名があります。

だから、多分このような構成が必要になります。

static mapping = { 
    id generator:'native' 
} 
+0

それはいいですね! Sybaseのインストールが完了したら、試してみます。 – emstol

+0

残念ながら、私はそれが働いたかどうかを確認することはできません。私はそれだと信じています...私のOracle idの名前は( "SomeTableID"のように)引用されています。Sybse ASEでは、列名/表名に引用符を使用できません。そして、私が恐れていたことがここにあります。私は両方のデータベースのための1つのマッピングを持つことはできません。 – emstol