【发布时间】:2021-06-01 15:51:42
【问题描述】:
我只想从表中选择几列。问题是我正在使用前端过滤器的规范和分页,我认为我不能将它们与标准构建器连接起来。我最初的想法是创建一个带有我想要的属性的@MappedSuperClass(在这种情况下,只是 id 和日期),并使用一个空子类中的 dao 存储库进行获取。我之前做过类似的事情并且它有效,但是子类使用不同的表,所以这是一个不同的球类游戏。在这种情况下,由于两个子类都使用同一个表,并且除了一个没有任何属性的类之外没有什么可以区分的,它会一直获取原始更大的类。我想避免在获取后仅使用我想要的列创建视图或在后端处理数据,但我认为这是唯一可能的解决方案。
超类
@MappedSupperClass
public class Superclass
{
@Column( name = "id" )
private Integer id;
@Column( name = "date" )
private Date date;
}
原始子类
@Entity
@Table( name = "table" )
public class OriginalSubclass
extends Superclass
{
@Column( name = "code" )
private Integer code;
@Column( name = "name" )
private String name;
}
新的子类
@Entity
@Table( name = "table" )
public class NewSubclass
extends Superclass
{
}
我为新的子类创建了一个新的 dao
@Repository
public interface NewSubclassDao
extends JpaRepository<NewSubclass, Integer>, JpaSpecificationExecutor<NewSubclass>
{
}
有没有办法通过与我的想法相似的东西只获得我想要的属性? 还是可以使用标准构建器来做到这一点? 如果所有选项都不可行,您更愿意使用视图还是处理数据?
编辑
为了清楚起见,我希望 Spring 使用 JPA findAll 或非常类似的东西只为我带来 id 和 date 属性,而不会弄乱规范中的分页或过滤器。
【问题讨论】: