問題タブ [grails-domain-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 主キーをVARCHAR2型にマッピングし、私のメソッドを実行して生成する方法
私はgrailsの初心者です。VARCHAR2で主キーをマッピングし、私の方法を使用して主キーを生成したいです。この問題を解決するにはどうすればよいですか?
groovy - Grailsで列名の規則を変更するにはどうすればよいですか?
今のところ、「first_name」に変換された「String firstName」フィールドがあり、Hibernate のデフォルトとして「firstname」が必要です。可能ですか?
grails - 自動保存によって無効化されたカスタム挿入および更新メソッド
Grails アプリケーションを Oracle から MySQL データベースに移植しています。元の Oracle バージョンは、MySQL にはない Oracle の INSTEAD OF INSERT OR UPDATE 機能を利用するいくつかの複雑なビューを使用するレガシー データベースです。回避策として、これらの種類のビューを指す Domain クラスに Insert メソッドと Update メソッドを実装しました。例えば、
現時点で私が直面している問題の説明は次のとおりです。
- サービス メソッド内で、AdminUser.get を使用して AdminUser のインスタンスをロードします。
- ロードされたインスタンスを変更して update() を呼び出すと、すべて問題なく表示されます
- サービス メソッドの実行が終了すると、インスタンスで save を呼び出す何かが原因で例外がスローされます。
ステップ (3) で魔法のような保存が行われるのを防ぐにはどうすればよいでしょうか (最近どこかで、Grails が変更されたドメイン クラス インスタンスをサービス メソッドの終了時にまだ保存されていないものとして自動的に保存するという記事を読みましたが、今すぐそのリソースにリンクしてください)?
grails - Grails 1.3.5:セッションが破棄されたときにユーザーテーブルを更新する
セッションが作成および破棄されたときにリッスンするHttpSessionListenerがあります。ユーザーがログインまたはログアウトするたびに更新するloggedInブール列を持つユーザードメインがあり、これを管理者管理に使用します。また、セッションIDをデータベースに保存します。
また、セッションが破棄されるたびに、loggedIn列を更新したいと思います。以下は、sessionDestroyedメソッドで記述されたコードです。
問題は、ユーザーテーブルが更新されないことです。
以下は、ログファイルで報告されたエラーです。
セッションが破棄されたときにユーザーテーブルを更新する適切な方法を知ることができますか?
ありがとうございました。ジェイチャンドラン。
grails - GrailsDomainClassPropertyを介したGrailsドメインクラスフィールドとgetBlah()メソッドの区別
Groovyスクリプトを(Grailsプラグインの一部として)作成していて、プラグインのユーザーが定義する可能性のあるGrailsDomainClassのプロパティのリストを取得したいと思います。domainClass.properties
これは、(domainClassがGrailsDomainClassの場合)を使用して実行できます。
ただし、ユーザーがgrailsドメインクラスを持っているとします。
この場合、との両方をdomainClass.properties
含むリストを返しますname
someNoneExistingProperty
これは、Grailsが誰かがgetBlah()メソッドを持っている場合に使用するために、読み取り専用プロパティをオンザフライで生成しているためだと理解しています。これはすばらしいことですが、私のスクリプトでは、「実際の」プロパティのみ(または少なくとも非読み取り専用プロパティ)でいくつかのアクションを実行したいと思います。
つまりsomeNonExistingProperty
、読み取り専用プロパティとして、または代わりに、Grailsによって生成され、プラグインのユーザーによってdomainClassのフィールドとして明示的に入力されていないプロパティとして区別または識別する方法が必要です。
GrailsDomainClassPropertyクラスを見てきましたが、プロパティに関する情報を提供するさまざまなメソッドがあります。ただし、プロパティが読み取り専用かどうか、またはdomainClassで定義されたフィールドと、「getSomeNonExistingProperty」の結果としてGrailsによってオンザフライで作成されたフィールドを区別できるようにするものはありません。 ()" 方法。
ここで明らかな何かが欠けていますか?明示的にユーザー定義されたフィールド(上記の例では名前など)のみのリストを取得する方法はありますか?
java - マルチドメイン関連付けに関する Grails 検証の問題?
3 つのドメイン間の保存アクションを検証する必要があります。関係は次のとおりです。
ユーザー - JobProcess : 1 対多、JobProcess - ヒートマップ : 1 対多。
私は例外を使用して検証フローを制御しています。これが私の検証クラスです:
また、ヒートマップ操作を抽象化するサービス クラスを作成します (そして、params データをオブジェクトにバインドします)。
そして私のコントローラー:
私の最初の問題: user.save() を使用してエラー検証がありません - 検証が実行されないのはなぜですか?
この問題を修正するには、if (user.save()) by : if (heatmap.validate() && user.save()) を購入して更新します。
続行するためのより良い方法はありますか?
私の 2 番目の問題: リダイレクトが無効な投稿の例外をトリガーしていません。
作成ビューにリダイレクトされましたが、すべてのフィールドが空白で (すべてのフィールド情報が失われました)、検証エラーはありません。
それにもかかわらず、私は model:[heatmap:che.invalidObject] を使用しています。
例外を除いて、invalidObject を返しているので、作成ビューには正確な検証エラーが表示されるはずです。どうしたの ?
ありがとう
hibernate - Grails: ドメイン クラス マッピング (休止状態のユーザー タイプのコレクション)
次のドメインモデルを実装できるかどうか疑問に思っています。
一連の間隔 (joda 時間) を含むドメイン クラスを用意しましょう。org.joda.time.contrib.hibernate.PersistentInterval hibernate ユーザー タイプを使用して、Interval をデータベース テーブルにマッピングできます ( http://www.grails.org/JodaTime+Pluginと同様の方法で)。ただし、1 つの間隔だけでなく一連の間隔がある場合、マッピングを実装する方法がわかりません。
例:
}
上記の実装は次のエラーで失敗します:
2010-10-23 18:30:25,483 [main] エラー context.GrailsContextLoader - ブートストラップの実行中にエラーが発生しました:「messageSource」という名前の Bean を作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、参照される主キー (アクティビティ [id]) org.springframework と同じ数の列を持つ必要があります。beans.factory.BeanCreationException: 「messageSource」という名前の Bean を作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException: 'messageSource' という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException: 'messageSource' という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 「messageSource」という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 「messageSource」という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'transactionManager' という名前の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException: 名前が 'transactionManager' の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException: 名前が 'transactionManager' の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.MappingException です: 外部キー (FK4FDC5B1E5107CA0:activity_intervals [start,end])) は、org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212)
この問題の回避策は、Interval を抽出して Interval を拡張するドメイン クラスを分離し、その中でマッピングを指定することだと思いました。ただし、Interval は final クラスなので拡張はできません。
アドバイスありがとうございます。
grails - 検証エラーを偽装するにはどうすればよいですか?
Grails Webflowプラグインを使用しています。私が扱っているドメインオブジェクトは次のとおりです。
Webflow のある時点で、fooObject.fooProp1 が null でないことを確認する必要があります。そうである場合は、エラーをスローして、ユーザーに強制的に値を指定させたいと考えています。(Bar オブジェクトと Foo オブジェクトの両方で) これを行うために validate() を使用しようとしましたが、fooProp1 には nullable:true プロパティがあるため、検証に合格します。何か案は?
grails - 日付検証のための Grails 最小制約
私はgrailsとgroovyの初心者です。開始日と終了日を持つ Project ドメインクラスがあります。終了日が開始日よりも大きくなる必要があることを指定する制約を入れたいです(さらに、プロジェクトの別の子オブジェクトは、親プロジェクトの日付で開始日と終了日を検証する必要があります)。これは最小制約で可能ですか、それとも別の場所に配置する必要がありますか? 一意の制約では、2 つのプロパティをそのようにリンクできますが、最小/最大制約がそれを許可することを願っています。私が試してみました
プロパティstartDateがプロジェクトで利用できないというエラーがスローされます
grails-plugin - Grails Currencies Plugin: クラス Money を解決できません
grails 通貨プラグインをインストールしました。Grails ドメイン クラスで Money 型を使用したい:
コンパイルすると、「クラス Money を解決できません」というエラーが表示されます。Grails Money Plugin のパッケージの階層をたどって、入れようとしました。
----それもうまくいきませんでした。
1) Foo を生成すると、作成されたすべてのドメイン クラスと同様に、grails はドメイン クラスを "projectName.Foo" の下に配置しました。2) Grails 1.3.5 を使用しています。
Currencies クラスがどこにあるかについてのアイデアはありますか?「インポート <....Money> に含めて、このコンパイル エラーを取り除くことができますか?