2011-11-15 15 views
1

私は既存のhibernateマッピングをgrailsアプリケーションに統合しました。ダイナミックファインダは正常に動作し、外部キーも解決されます。しかし、私はドメインクラスの新しいインスタンスを保存することはできません。Grails。ゴーム新しいインスタンスの作成中にエラーが発生しました

注:ドメインクラスにIDフィールドはありません。すべてのプライマリキーにはカスタム名(carId、houseIdなど)があります。このClassName.get(id)が機能しないため、これを回避するには動的なファインダー(findByCarIdなど)を使用しています。私はこれもインスタンスを作成する際の問題だと思います。私が得た 例外は以下の通りです:

org.hibernate.MappingException: Unknown entity: xxx.xxx.DomainClassName 

(既存のエンティティ名がDomainClassNameで、エンティティ名パラメータに関連した問題のようですが、Grailsのエンティティにxxx.xxx.DomainCalssNameを探してみてください完全修飾名)を見つけられません。

いくつかの提案がありますか?

答えて

0

あなたはIDジェネレータと、次のようにそれがマップする列をカスタマイズする必要があります。

static mapping = { 
    id column:'carId', type:'integer' 
} 
+0

これは、既存のJavaクラスとそのマッピングには触れませんか? – Bax

+0

ですから、もしあなたがjavaクラスを持っているなら、hibernate.cfg.xmlを使わなければなりません。 grails-app/conf/hibernateディレクトリに置いてください。このファイルは、 'grails create-hibernate-cfg-xml'(grails docsを参照)で生成できます。ドメインクラスの* hbm.xmlを同じディレクトリ(grails-app/conf/hibernate)に入れることを忘れないでください。 – jenk

+0

私は既にこの作業を行っています。データを取得して更新するためにドメインを使用しています(新しいインスタンスの作成に関する問題です)。あなたが書いたステートメント、どこにそれを書くのですか? – Bax

1

あなたはあなたのhbm.xmlマッピングの命名の問題を持っているように見える、これは特にGrailsのとは何の関係もありません。これらのマッピングからentity-name属性を確認する必要があります。詳細はSee this postをご覧ください。

+0

問題は、ドメインインスタンスを更新または要求するときに、すべてが正常であることです.gililsはhbm.xmlファイルで指定されたエンティティ名で動作しますが、挿入するときに何が原因か分かりませんが、マッピングからエンティティ名を取得し、クラスの完全修飾名を取得します(entity-nameパラメータがない場合は、休止状態のデフォルトです)。これはもちろんマッピングされません。 – Bax

関連する問題