私はinitialDate
とendDate
のTemporalType=DATE
アノテーション(カレンダー属性)を持つクラスという名前のクラスを持っています。私はJPAでそれを維持しようとしていますが、明らかにHibernateはそれを正しく行うことができません。JPA間違ったカレンダーの日付を保持
これらは属性です:
@Temporal(TemporalType.DATE)
private Calendar dataInicial; // initialDate
@Temporal(TemporalType.DATE)
private Calendar dataFinal; // endDate
私はこのように設定しようとしています:
Periodo periodo = new Periodo();
periodo.setDataInicial(Calendar.getInstance());
Calendar dataFinal = periodo.getDataInicial();
dataFinal.add(Calendar.MONTH, 6);
periodo.setDataFinal(dataFinal);
em.persist(periodo);
そして、私はすべての値をSYSOUTとき、それは完全に正常に動作しますが、データベースにそれがあります
+----+------------+-------------+
| id | dataFinal | dataInicial |
+----+------------+-------------+
| 5 | 2017-10-03 | 2017-10-03 |
+----+------------+-------------+
Calendar dataFinal = Calendar.getInstance();
と設定すると正しく動作し、私はしたい:
+----+------------+-------------+
| id | dataFinal | dataInicial |
+----+------------+-------------+
| 6 | 2017-10-03 | 2017-04-03 |
+----+------------+-------------+
なぜですか?私はそれがJava/OOPの問題のほうだと思うので、タグでそれを固執します。
'java.util.Calendar'は可変です。両方のフィールドに同じオブジェクトを割り当ててから、オブジェクトを変更しました。 –
異なる日付を管理するための最良の方法は何でしょうか?私はユーザ入力を持っているinitialDateを持っていますが、endDateは常に6ヶ月後です。 –
なぜカレンダーが必要ですか?なぜ単に日付を使用していないのですか? –