Java 通过Spring Boot JPA+Postgresql+H2执行间隔
我试图在SpringBoot中创建一个JPA存储库查询 我使用的是SpringDataJPA2.1.5、SpringBoot2.1.3、postgresql驱动程序42.2.5、h2database 1.4.200、Java1.8 我的条件是: 我必须使用PostgreSQL进行生产测试,使用H2进行单元集成测试。 我不应该使用本机查询postgres x h2。 我需要从客户表中获取客户记录 但仅限于在当前日期前至少24小时注册的客户。 所以我指的是DB约会。我不能使用Java将任何参数传递到查询中。 我的客户实体如下所示:Java 通过Spring Boot JPA+Postgresql+H2执行间隔,java,postgresql,spring-boot,jpa,h2,Java,Postgresql,Spring Boot,Jpa,H2,我试图在SpringBoot中创建一个JPA存储库查询 我使用的是SpringDataJPA2.1.5、SpringBoot2.1.3、postgresql驱动程序42.2.5、h2database 1.4.200、Java1.8 我的条件是: 我必须使用PostgreSQL进行生产测试,使用H2进行单元集成测试。 我不应该使用本机查询postgres x h2。 我需要从客户表中获取客户记录 但仅限于在当前日期前至少24小时注册的客户。 所以我指的是DB约会。我不能使用Java将任何参数传递到
@Entity
@Table(name = "customer")
public class Customer {
@Id
@Column(name = "cust_no")
private int custNo;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "registration_timestamp")
private Date registrationTimeStamp;
}
我的客户存储库将类似于:
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> {
@Query(value = "SELECT c FROM Customer c WHERE c.registrationTimeStamp <= SOMETHING")
List<Customer> getCustomers24HoursAfterRegistration();
}
我真的不知道该把什么放在那个地方。我想我可以使用类似于当前时间戳的东西-指24小时的东西。
所有的例子都是关于nativeQuery的。或者从Java传递参数。我不能使用INTERVAL,因为Spring JPA不支持
我不敢相信SpringJPA中没有这样一个简单的过程,它支持两个RDBMS PostgreSql和H2。我想问有什么方法可以做到这一点吗?如果你不想使用原生查询,那么你必须使用查询方法 你可以这样做
List<User> findByCreatedAtGreaterThanEqual(Data createdAt);
更多信息,您可以看到,我认为您可以使用日期字符串。最好的方法是在数据库中尝试查询或编写单元测试。