我正在使用具有多个属性/表列的实体:
@Entity
public class History {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column
ZonedDateTime dateCreated;
@NotNull
@Column
private ZonedDateTime dateValidFrom;
...
我有一个带有处理程序的 Spring MVC 控制器,该处理程序返回按特定属性(例如 History
)排序的 dateValidFrom
条目。下面的代码来自HistoryService
:
public List<History> findAll(int page, int pageSize) {
PageRequest pageSettings = PageRequest.of(page, pageSize, Sort.by(Sort.Direction.ASC, "dateValidFrom"));
return historyRepo.findAll(pageSettings).stream().collect(Collectors.toList());
}
如何避免使用硬编码的 dateValidFrom
属性名称并具有类型安全构造(在编译时检测重命名错误)?
答案 0 :(得分:0)
JPA 2 定义了一个类型安全的 Criteria API,它允许使用所谓的静态 metamodel
类以强类型方式构造 Criteria 查询。见:JPA Static Model Generator
这些模型是静态类,允许您:
_History.dateValidFrom
它返回字段名称的字符串,从而避免硬编码字符串。
检查 this answer 以了解如何生成这些静态模型: