- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 @NoRepositoryBean
方法中使用 @Query
和 @MappedSuperclass
?
我有@MappedSuperclass时间(基础有长ID)
@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);
}
更新:
例如,我有临时实体 Worker:
@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);
}
最佳答案
实际上你可以使用 SpEL 表达式。 Spring Data JPA reference
因此我们可以用 #{#entityName}
引用示例:
@MappedSuperclass
public abstract class AbstractMappedType {
…
String attribute
}
@Entity
public class ConcreteType extends AbstractMappedType { … }
@NoRepositoryBean
public interface MappedTypeRepository<T extends AbstractMappedType>
extends Repository<T, Long> {
@Query("select t from #{#entityName} t where t.attribute = ?1")
List<T> findAllByAttribute(String attribute);
}
public interface ConcreteRepository
extends MappedTypeRepository<ConcreteType> { … }
我的示例的解决方案:
@NoRepositoryBean
public interface TemporalRepository<T extends Temporal> extends JpaRepository<T, Long> {
List<T> findByTemporalCode(Long temporalCode);
List<T> findByTemporalCodeAndDateBeginBeforeAndDateEndAfter(Long temporalCode, Date dateBegin, Date dateEnd);
@Query("select t from #{#entityName} t
where (t.dateBegin < ?1 or t.dateBegin is null)
and (t.dateEnd < ?1 or t.dateEnd is null)")
List<T> findByDate(Date dateBegin);
}
关于java - Spring JPA NoRepositoryBean 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624066/
如何在 @NoRepositoryBean 方法中使用 @Query 和 @MappedSuperclass? 我有@MappedSuperclass时间(基础有长ID) @MappedSupercl
使用 Spring Boot/Spring Data,我向所有存储库添加了自定义功能。这是我所做的一个片段: 所以我有我的存储库界面: @NoRepositoryBean public interfa
基础库 @NoRepositoryBean public interface BaseRepository extends JpaRepository, JpaSpecificatio
我有一些模块,主要模块与数据存储无关。有一些子模块依赖于具有 JPA 和 Mongo 存储库实现的主模块。 Core-Module - 所有业务逻辑,@NoRepositoryBean 接口(inte
在阅读 Spring Data 文档时,我多次遇到 @NoRepositoryBean 接口(interface)。 引用文档: If you're using automatic repositor
我正在尝试编写一个通用的 SecurePagingAndSorting 存储库,它将检查 CRUD 操作的安全性,以节省在所有 JPA 存储库中重复相同的 PreAuthorize(使用不同的权限)。
我是一名优秀的程序员,十分优秀!