大佬教程收集整理的这篇文章主要介绍了java – 使用Date参数时的Spring Data JPA日期“之间”查询问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,我使用Spring Data和hibernate作为JPA提供程序来持久化和读取数据.
@Entity
@Getter @Setter
@Table(name = "operation")
@Inheritance(strategy = InheritanCEType.JOINED)
@EqualsAndHashCode(of = {"operationId"})
public abstract class Operation implements serializable {
public static final int OPERATION_ID_LENGTH = 20;
@Id
@column(name = "operation_id",length = OPERATION_ID_LENGTH,nullable = false,columnDeFinition = "char")
private String operationId;
@column(name = "operation_type_code")
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private String operationTypeCode;
@Temporal(TemporalType.timestamp)
@column(name = "begin_timestamp",nullable = falsE)
private Date begintimestamp = new Date();
@Temporal(TemporalType.timestamp)
@column(name = "end_timestamp")
private Date endtimestamp;
@column(name = "operation_number",length = 6,columnDeFinition = "char")
private String operationnumber;
@Enumerated(EnumType.StriNG)
@column(name = "operation_status",length = 32,nullable = falsE)
private OperationStatus status;
@manyToOne(optional = falsE)
@Joincolumn(name = "user_id")
private User user;
@manyToOne
@Joincolumn(name = "terminal_id")
private Terminal terminal;
@column(name = "Training_mode",nullable = falsE)
private Boolean TrainingMode;
}
public interface ConcreteOperationRepository extends JpaRepository@H_674_15@deviceid = :deviceid AND o.TrainingMode = :TrainingMode")
Collection deviceid") String deviceid,@Param("TrainingMode") Boolean TrainingModE);
}
我用以下方法进行集成测试:
@transactional
@Test
public void shouldFindoperationByPeriodAndStatusAndWorkstationId() {
Date from = new Date(Calendar.geTinstance().getTime().getTime());
List < countrowsforeachtype;="" i++)="" {="" concreteoperationrepository.save(createconcreteoperation(status,terminalid,string.valueof(++id)));="" }="" }="" }="" date="" to="new" date(calendar.getinstance().gettime().gettime());="" for="" (string="" terminalid="" :="" terminalids)="" {="" for="" (operationstatus="" status="" :="" typeforuse)="" {="">
但是由于结果为空而我使用MysqL数据库时此测试失败(但是当我切换到HsqlDB时通过)
此外,如果我在测试开始时将延迟“Thread.sleep(1000)”延迟一秒,就在第一行之后,则此测试通过.
query.setParameter("from",from),TemporalType.timestamp);
使用Spring Data,您需要使用@Temporal
注释,因此您的查询将变为:
@Query("SELECT o FROM ConcreteOperation o WHERE o.begintimestamp betweeN :from AND :to AND o.status = :status AND o.terminal.deviceid = :deviceid AND o.TrainingMode = :TrainingMode")
Collection
以上是大佬教程为你收集整理的java – 使用Date参数时的Spring Data JPA日期“之间”查询问题全部内容,希望文章能够帮你解决java – 使用Date参数时的Spring Data JPA日期“之间”查询问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。