Hibernate には引数のないコンストラクターが必要であり、メソッドのオーバーロードをサポートするすべての言語ではおそらく問題にはなりませんが、ColdFusion ORM (内部で Hibernate に依存している) で非常に厄介な問題に直面しました。
エンティティのカスタム コンストラクタ (init メソッド) を宣言し、そのコンストラクタがいくつかの引数を必要とする場合、カスタム コンストラクタを呼び出しているため、Hibernate はエンティティのリハイドレートに失敗します。
その動作のために、常に有効なエンティティを設計することはほとんど不可能に思われ、したがって CF-ORM はほとんど役に立たなくなります。
私が見つけた唯一の回避策は、コンストラクターとして使用する別のカスタム メソッドを宣言することです。これにより、オブジェクトのインスタンス化が or のようになりnew SomeEntity().construct(...)
ますcreateObject('component', 'SomeEntity').construct(...)
。それはかなり面倒です...
init
このすべてで非常にばかげているのは、を使用してメソッドを呼び出さずにエンティティをインスタンス化できることです。そのため、パラメーターを渡さず、後で他のパラメーターを設定するという事実を考慮して、createObject
なぜ Hibernate に実装でメソッドを呼び出させることにしたのか疑問に思います。init
意味。
とにかく、その問題に対する他の回避策はありますか?
編集: