sql >> データベース >  >> RDS >> Mysql

SpringデータjpafindByDateは常に空のリストを返します

    dbスキームを生成しましたか?生成しようとしましたか?

    (ドロップで)生成できる場合は、application.propertiesで次のプロパティを設定します。

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

    DBにはさまざまなデータ型(日付と日時など)があり、春のデータで使用される可能性があります。私はあなたのプロジェクトを再作成しました、そして、everithingは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());
    
        }
    }
    

    結果:eq? :trueods.size:1、ods2.size:1

    DBクエリ:

    mysql> select * from ordr;
    +----+----------------------------+
    | id | creation                   |
    +----+----------------------------+
    |  1 | 2016-08-03 15:15:12.386000 |
    +----+----------------------------+
    1 row in set (0,00 sec)
    


    1. C#を使用してMySqlに日付を挿入します

    2. PostgreSQLとMySQL、比較

    3. SQLServerで列をNullからNotNullに変更する方法

    4. MySQL-ロシア語の文字が正しく表示されない