Haben Sie Ihr DB-Schema generiert? Haben Sie versucht, es zu generieren?
Wenn es möglich ist, (mit Drop) zu generieren, setzen Sie die folgende Eigenschaft in Ihrer application.properties.
spring.jpa.hibernate.ddl-auto=create-drop
Möglicherweise haben Sie unterschiedliche Datentypen (z. B. Datum vs. Datumszeit) in Ihrer DB und werden von Spring Data verwendet. Ich habe Ihr Projekt neu erstellt und alles hat gut mit H2 und MySQL funktioniert.
BEARBEITEN:
Versuchen Sie, Ihre Spaltenbeschreibung wie folgt zu aktualisieren:
@Column(name = "creation", columnDefinition="TIMESTAMP(6)")
@Temporal(TemporalType.TIMESTAMP)
private Date creation;
Es kann unterschiedliche Genauigkeiten geben. Siehe meinen Code:
Klasse bestellen.
@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-Klasse testen.
@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());
}
}
Ergebnis:eq? :trueods.size:1, ods2.size:1
DB-Abfrage:
mysql> select * from ordr;
+----+----------------------------+
| id | creation |
+----+----------------------------+
| 1 | 2016-08-03 15:15:12.386000 |
+----+----------------------------+
1 row in set (0,00 sec)