#set( $name = ${NAME.substring(0,1).toLowerCase()}+${NAME.substring(1)} ) #set( $Names = ${NAME}+"s" ) #set( $names = ${name}+"s" ) import lombok.RequiredArgsConstructor; import org.hibernate.envers.AuditReader; import org.hibernate.envers.AuditReaderFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.ArrayList; import java.util.List; #parse("File Header.java") @Repository @Transactional @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class ${NAME}HistoryRepository { @PersistenceContext private EntityManager entityManager; private final ${NAME}Mapper ${name}Mapper; public List<${NAME}DTO> getRevisions(Long id) { AuditReader auditReader = AuditReaderFactory.get(entityManager); List revisions = auditReader.getRevisions(${NAME}.class, id); List<${NAME}DTO> ${names} = new ArrayList<>(); for (Number revision : revisions) { ${NAME} ${name} = auditReader.find(${NAME}.class, id, revision); ${names}.add(${name}Mapper.${name}To${NAME}DTO(${name})); } return ${names}; } }