現在、この問題を解決するには苦労しています。GORMにおける抽象的なドメインクラス:静的なGORMメソッドの扱い方
抽象的なドメインクラスを使用して、いくつかの一般的な操作を実行するための汎用コードを使用できるようにしたいと考えていました。
私の問題は、GORM操作の多くがドメインクラスの静的メソッドであることです。これは困難です。これらのメソッドの非静的等価物があるかどうか疑問に思っていました。 "withTransaction" "findById"などを使用することができます。それとも、私が使うことができる「グルーヴィー・マジック」があれば?
私はGrailsの外でGORMを使用しているので、 "static transactional = true"サービス設定にアクセスできないと思います。
ご協力いただければ幸いです。
抽象ドメインクラス:
@Entity
public abstract class Entity<K> {
public abstract String toNiceString();
public K id;
public K getId(){
return id;
}
public void setId(final K id){
this.id = id;
}
}
と例具体的なクラス:
@Entity
@EqualsAndHashCode
class Person extends Entity<String> {
String name
String summary
LocalDate birthDate
LocalDate deathDate
String occupations
...
}
と私はいくつかのドメインオブジェクト間で再利用できるように期待していたことにより、いくつかの一般的なコード、もちろんのT.xxxx()静的メソッドは機能しません。 Javaで同様
public abstract class AbstractParser<T extends Entity> {
protected void parseAndSavePages(){
//Do some parsing
...
T.withTransaction {
if(T.findEntityById(entity.id)){
println "Already exists!";
} else {
entity.save(failOnError: true);
}
}
}
}
驚くばかりです。治療をしました。ありがとう。 – Ben