【发布时间】:2018-04-27 11:47:28
【问题描述】:
我有一个实体
@Entity
@Table(name = "EVENT")
public class Event {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@Column(name = "EVENT", columnDefinition="VARCHAR(100)", nullable = false)
private String event;
@Column(name = "DATE", columnDefinition="DATETIME", nullable = false)
@Convert(converter = InstantConverter.class)
private Instant date;
}
还有一个SearchParams 类所有字段都是可选的
public class SearchParams {
private Long id;
private Instant startDate;
private Instant endDate;
private String event;
public Optional<Long> getID() {
return Optional.ofNullable(id);
}
// ... Similar for other fields ...
}
我希望能够像这样搜索:
public List<Event> search(SearchParams searchParams) {
// Do something with Entity Manager/another hibernate class to create a custom query based off the search params.
return events;
}
在 JPA 中实现这一目标的最简单方法是什么?或者这不是使用正确的框架?
我总是可以求助于sql 字符串构建,但这不是一个好方法。
【问题讨论】:
-
如何将
SearchParams类字段保存到数据库中 -
我认为这篇文章会有所帮助。 stackoverflow.com/questions/2444603/…
-
@ArvindKatte 我没有持久化该对象,它纯粹是一个包含要在 where 子句中使用的搜索过滤器的类,例如,如果
SearchParams具有填充数据库查询的event字段将选择事件字段与过滤器匹配的行 -
我在这里解释了解决方案,可能对你有帮助stackoverflow.com/a/48854352/4720910