Indem Sie alle oben genannten Antworten kombinieren, können Sie mit BaseEntity wiederverwendbaren Code schreiben:
@Data
@NoArgsConstructor
@MappedSuperclass
public abstract class BaseEntity {
@Transient
public static final Sort SORT_BY_CREATED_AT_DESC =
Sort.by(Sort.Direction.DESC, "createdAt");
@Id
private Long id;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
@PrePersist
void prePersist() {
this.createdAt = LocalDateTime.now();
}
@PreUpdate
void preUpdate() {
this.updatedAt = LocalDateTime.now();
}
}
Das DAO-Objekt überlädt die Methode findAll - verwendet im Grunde immer noch findAll()
public interface StudentDAO extends CrudRepository {
Iterable findAll(Sort sort);
}
StudentEntity
erweitert BaseEntity
, der wiederholbare Felder enthält (vielleicht möchten Sie auch nach ID sortieren)
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
class StudentEntity extends BaseEntity {
String firstName;
String surname;
}
Schließlich der Service und die Verwendung von SORT_BY_CREATED_AT_DESC
, die wahrscheinlich nicht nur im StudentService
verwendet werden wird.
@Service
class StudentService {
@Autowired
StudentDAO studentDao;
Iterable findStudents() {
return this.studentDao.findAll(SORT_BY_CREATED_AT_DESC);
}
}