Saya memiliki bidang effective_startdate di kelas Entitas saya.

@Basic
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "effective_startdate", columnDefinition = "TIMESTAMP WITHOUT TIME ZONE")
private Date effectiveStartdate;

Yang ingin saya gunakan di kelas repositori Jpa saya untuk memfilter ke metode getmapping saya untuk penggunaan lebih lanjut:

List<PoJoObject> findByEffectiveStartdateLessThanEqual(Date date);

Untuk seluruh operasi ini db backend saya adalah postgres dan bidang yang sama memiliki tipe sebagai TIMESTAMP.

Adakah yang bisa membantu saya untuk mendapatkan respons format ("yyyy-MM-dd HH:mm:ss") yang diharapkan dari panggilan getmapping saya.

Saya benar-benar baru dalam hal ini dan tidak tahu bagaimana Spring secara internal menangani Date dan membuat serial/deserialisasi dan membandingkan dengan postgres db.

Catatan:

  • menggunakan java.util.Date dalam kode java.
  • keluaran postgres effective_startdate terlihat seperti ini:

2019-09-19 18:28:23.012

  • format respons untuk bidang yang sama akan datang sebagai:

"tanggal mulai efektif": "30-07-2019T04:37:55.000+0000"

0
YouAreAwesome 19 September 2019, 17:43

1 menjawab

Jawaban Terbaik

Anda harus menambahkan anotasi JsonFormat ke effectiveStartdate:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "effective_startdate", columnDefinition = "TIMESTAMP WITHOUT TIME ZONE")
private Date effectiveStartdate;

Omong-omong. anotasi @Basic tidak diperlukan dan nama kolom juga berlebihan karena beginilah cara Hibernate menerjemahkan _ ke camelCase.

1
Simon Martinelli 19 September 2019, 15:44