既存の Java ORM (Ebean) に対する Scala 拡張機能を開発しています。このプロジェクトの目標は、ORM にできるだけ多くのタイプ セーフを追加することです。それ以外の
Ebean.find(Product.class).fetch("name", "unit").findList()
私は最終的に次のようなものを書くことができるようにしたいと思います
(objects of entity[Product] with attributes name and unit) getIt
(これは非常に最初の DSL アプローチであることに注意してください)。
ORM モデルはすでに次のように定義されています。
@Entity
public class {
public String name;
public String unit;
}
コンパイル時にクエリ内の属性のタイプ セーフを実現するには、たとえば のようなダミー オブジェクトでそれらにアクセスする必要があります(new Product()).name
。
これは、そのクラスに存在するモデル メンバーのみが使用されるようにするための最良の方法だと思いますが、実行時に、この変数がアクセスされたことを認識する方法が必要です。それ以外の場合は、そのメンバーを呼び出すだけname
で、クエリでこれについて知りません。
これを達成する方法を知っている人はいますか?変数がいつアクセスされたかを追跡し、実行時にその情報を他のオブジェクトに与える可能性はありますか?
モデル クラスで public メンバーを使用する代わりに、getter と setter にフックすることは既に考えていましたが、これではクエリまたはモデルが非常に見苦しくなります。もう 1 つの問題は、追加の特定のメソッドをモデルごとに手動で追加する必要があることです。
誰かが可能な解決策を提案できれば幸いです。ありがとう!