您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring数据JPA findByDate总是返回一个空列表

Spring数据JPA findByDate总是返回一个空列表

您是否生成数据库方案?您是否尝试生成它?

如果可以生成(带删除),请在application.properties中设置以下属性

spring.jpa.hibernate.ddl-auto=create-drop

可能您的数据库中具有不同的数据类型(例如,日期与日期时间),并由spring数据使用。我已经重新创建了您的项目,并且在H2和MysqL上都可以正常工作。

编辑:

尝试更新您的列说明,如下所示:

@Column(name = "creation", columnDeFinition="TIMESTAMP(6)")
@Temporal(TemporalType.TIMESTAMP)
private Date creation;

精度可能有所不同。看我的代码

订单类。

@Entity
@Table(name = "Ordr")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @Column(name = "creation", columnDeFinition="TIMESTAMP(6)")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creation;

    // getters and setters
}

测试bean类。

@Component
public class SomeBean {

    @Autowired
    private OrderRepository orderRepository;

    @postconstruct
    public void init() {

        Date date = new Date();

        Order order = new Order();
        order.setId(1L);
        order.setCreation(date);

        orderRepository.save(order);

        Date creationFromDB = orderRepository.findOne(1L).getCreation();

        System.out.println("eq? : "+ new Date(creationFromDB.getTime()).equals(order.getCreation()));
        List<Order> ods = orderRepository.findByCreation(creationFromDB);
        List<Order> ods2 = orderRepository.findByCreation2(creationFromDB);
        System.out.println("\n ods.size: " + ods.size() +", ods2.size: "+ods2.size());

    }
}

结果:等于?:true ods.size:1,ods2.size:1

数据库查询

MysqL> select * from ordr;
+----+----------------------------+
| id | creation                   |
+----+----------------------------+
|  1 | 2016-08-03 15:15:12.386000 |
+----+----------------------------+
1 row in set (0,00 sec)
Java 2022/1/1 18:47:00 有406人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶