5
目前正在与此挣扎。GORM中的抽象域类:如何处理静态GORM方法
我希望能够使用抽象域类,使我能够使用一些通用的代码做一些常用执行的操作。
我的问题是,很多格姆操作都在域类的静态方法,这使得它很难。想知道这些方法是否有任何非静态等价物,例如“withTransaction”“findById”等我可以使用的。或者,如果有什么“常规魔法”,我可以使用?
顺便说一句,我使用GORM Grails的外面,所以我不认为我有机会获得“静态事务=真正的”服务设置。
任何帮助,将不胜感激。
抽象域类:
@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()静态方法不起作用。
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