私は2つのドメインクラスを持っています。 1つは「パートナー」で、もう1つは「顧客」です。顧客は、パートナーの一部にすることができますし、パートナーが1件の以上のお客様持つことができます。私は、顧客は、このように、パートナーの一部であるかどうかを確認しようとするたびに、しかしjoinTableを使用したGrailsの1対多マッピング
class Customer {
Integer id
String name
static hasOne = [partner:Partner]
static mapping = {
partner joinTable:[name:'PartnerMap',column:'partner_id',key:'customer_id']
}
}
class Partner {
Integer id
static hasMany = [customers:Customer]
static mapping = {
customers joinTable:[name:'PartnerMap',column:'customer_id',key:'partner_id']
}
}
を:
私は次のエラーを取得する:見つけることが想定されている、それはPartnerMapテーブルにある...
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select this_.customer_id as customer1_162_0_, this_.company as company162_0_, this_.display_name as display3_162_0_, this_.parent_customer_id as parent4_162_0_, this_.partner_id as partner5_162_0_, this_.server_id as server6_162_0_, this_.status as status162_0_, this_.vertical_market as vertical8_162_0_ from Customer this_]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
GrailsのPARTNER_IDを考えているかのように見えますがお客様のクエリの一部であり、そうではありませんcustomer_id、t鶏は、対応するpartner_idからパートナーを取得します。
誰かが私が間違っていることを何か手がかりがありますか?
編集:私はレガシーデータベーステーブルでこれをやっていることを言いました。だから私はパートナー、顧客、PartnerMapテーブルを持っています。 PartnerMapには、customer_idフィールドとpartner_idフィールドがあります。
おっと、忘れてしまいましたが、私はこれまでのデータベースのことでこれをやっています...だから、あらかじめ定義されたテーブルで作業する必要があります。 Customer、Partner、およびPartnerMapテーブルがあります。 PartnerMapは単にcustomer_idフィールドとpartner_idフィールドです。これは私を制限しますか? – intargc
私はこの問題がGrailsコンソールの内部にロードしようとしているときにのみ存在することを認識しました。なぜか...私はGrailsのコンソールがRailsのような環境に適切にロードされていると仮定しました... – intargc
私はコードを修正しましたが、コンソールの外で動作していればより簡単な解決方法を使用する必要があります。コンソールはGrailsのランタイム環境に非常に近いですが、ランアプリケーションや戦争中に展開されたときには多くのことが起こっており、コンソールはその環境に近似しています。 –