Hiện đang đấu tranh với vấn đề này.Các lớp miền trừu tượng trong GORM: cách đối phó với các phương pháp GORM tĩnh
Tôi đã hy vọng có thể sử dụng lớp miền trừu tượng để cho phép tôi sử dụng một số mã chung để thực hiện một số thao tác thường được thực hiện.
Vấn đề của tôi là rất nhiều thao tác GORM là các phương thức tĩnh trên lớp miền, điều này khiến cho việc này trở nên khó khăn. Đã tự hỏi nếu có bất kỳ tương đương không tĩnh nào của các phương pháp này, ví dụ: "withTransaction" "findById" vv mà tôi có thể sử dụng. Hoặc nếu có bất kỳ "ma thuật groovy" mà tôi có thể sử dụng?
BTW, đang sử dụng GORM bên ngoài grails, vì vậy tôi không nghĩ rằng tôi có quyền truy cập vào cài đặt dịch vụ "static transactional = true".
Mọi trợ giúp sẽ được đánh giá cao.
abstract class miền:
@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;
}
}
và một ví dụ lớp bê tông:
@Entity
@EqualsAndHashCode
class Person extends Entity<String> {
String name
String summary
LocalDate birthDate
LocalDate deathDate
String occupations
...
}
và một số mã chung theo đó tôi đã hy vọng để có thể tái sử dụng trên một số đối tượng miền, nhưng tất nhiên các Phương thức tĩnh T.xxxx() sẽ không hoạt động.
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);
}
}
}
}
Tuyệt vời. Làm việc một điều trị. Cảm ơn. – Ben