Как я могу использовать @Query
в @NoRepositoryBean
методах с @MappedSuperclass
?Весна JPA NoRepositoryBean Запросы
У меня есть @MappedSuperclass Temporal (Basis имеет идентификатор длиной)
@MappedSuperclass
public abstract class Temporal extends Basis<Long> {
private Long temporalCode;
private Date dateBegin;
private Date dateEnd;
// getters/setters
}
и @NoRepositoryBean TemporalRepository
@NoRepositoryBean
public interface TemporalRepository<T extends Temporal> extends JpaRepository<T, Long> {
// this two are ok
List<T> findByTemporalCode(Long temporalCode);
List<T> findByTemporalCodeAndDateBeginBeforeAndDateEndAfter(Long temporalCode, Date dateBegin, Date dateEnd);
// query not working because Temporal is not an @Entity
// @Query("select t from Temporal t
// where (t.dateBegin < ?1 or t.dateBegin is null)
// and (t.dateEnd < ?1 or t.dateEnd is null) ")
// List<T> findByDate(Date date);
}
Обновление:
Например, у меня есть временная организация работник :
@Entity
public class Worker extends Temporal {
// fields and methods here
}
public interface WorkerRepo extends TemporalRepository<Worker> {
// Looks like it will work but I don't want to write the same method in each TemporalRepository subclass
// @Query("select w from Worker w where (w.dateBegin < ?1 or w.dateBegin is null) and (w.dateEnd < ?1 or w.dateEnd is null) ")
// List<Worker> findByDate(Date date);
}
рабочих средств? вы получаете какое-то исключение или что-то в этом роде. – Amogh
Я думаю, что это не сработает, вы можете писать только методы в интерфейсе '@ NoRepositoryBean' без @query, а позже определить другой интерфейс репозитория без' @ NoRepositoryBean' и использовать расширения с помощью 'TemporalRepository 'интерфейс и переопределить методы. – Amogh
Не работает означает получение исключения при запуске приложения. – DimaIT