Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA坚持错误的日历日期_Java_Hibernate_Oop_Jpa - Fatal编程技术网

Java JPA坚持错误的日历日期

Java JPA坚持错误的日历日期,java,hibernate,oop,jpa,Java,Hibernate,Oop,Jpa,我有一个名为Period的类,它有initialDate和endDate以及TemporalType=DATE注释(日历属性)。我试图用JPA来坚持它,但显然Hibernate并没有做到正确 这些是属性: @Temporal(TemporalType.DATE) private Calendar dataInicial; // initialDate @Temporal(TemporalType.DATE) private Calendar dataFinal; // endDate 我试着这

我有一个名为Period的类,它有
initialDate
endDate
以及
TemporalType=DATE
注释(日历属性)。我试图用JPA来坚持它,但显然Hibernate并没有做到正确

这些是属性:

@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);
当我计算出所有值时,它工作得非常好,但在数据库中它被记录为:

+----+------------+-------------+
| 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问题,所以我将在标记中继续使用它

Calendar.getInstance()
这将返回日历的一个实例

periodo.setDataInicial(Calendar.getInstance()); 
这会将日历对象指定给
datainical
,当您说

Calendar dataFinal = periodo.getDataInicial();
datainical
参照的日历对象被指定给
dataFinal
。因此在此之后,对
datainical
dataFinal
所做的更改将反映在这两个字段中


OOP中没有缺陷

java.util.Calendar
是可变的。您已将同一对象分配给两个字段,然后对该对象进行了变异。那么,管理不同日期的最佳方法是什么?我有一个有用户输入的初始日期,但结束日期总是6个月后。为什么需要日历?为什么不使用Date呢?这是项目开始时的一个开发缺陷。现在,每个日期处理程序都是一个日历对象。那么,我是否可以轻松设置它?