【发布时间】:2017-10-27 10:41:00
【问题描述】:
我已经使用@Temporal 注解创建了一个实体:
import java.util.Date;
@Entity
public class TestEntity implements java.io.Serializable {
private long id;
private Date endDate;
@Id
@GeneratedValue(generator = "MY_SEQ", strategy = GenerationType.SEQUENCE)
public long getId() {
return id;
}
public void setId(final long id) {
this.id = id;
}
@Temporal(TemporalType.DATE)
@Column(name = "END_DATE", nullable = false)
public Date getEndDate() {
return endDate;
}
public void setEndDate(final Date endDate) {
this.endDate = endDate;
}
}
现在在我的代码中,我使用以下方法保存该实体:
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 31);
calendar.set(Calendar.MONTH, Calendar.OCTOBER);
calendar.set(Calendar.YEAR, 2017);
Date date = calendar.getTime();
TestEntity testEntity = new TestEntity();
testEntity.setEndDate(date);
Session session = sessionFactory.getCurrentSession();
session.save(testEntity);
如果我在我的 Tomcat 服务器上运行此代码,它可以正常工作并将日期保存为 10/31/2017。
现在,如果我在 weblogic 服务器上运行相同的代码,上面的代码也会保存时间戳 - 10/31/2017 6:05:18 AM。这里我不要时间戳,我只需要存储日期。
我已启用日志以查看 hibernate 生成的 SQL 查询,但我看不出是什么导致了此问题。
您能帮我解决一下这种情况下的问题吗?
我在两台服务器中使用相同的休眠罐子,并从两台服务器指向 Oracle 数据库。
【问题讨论】:
-
Tomcat 服务器它工作正常,并将日期保存为 10/31/2017 和 weblogic 服务器上面的代码正在保存时间戳以及 - 10/31 /2017 上午 6:05:18。那么这些都使用相同的数据库引擎和
hibernate版本?应该是hibernate生成列并决定这些列的数据类型。 -
@pirho,是的,我在两个服务器中使用相同的休眠 Jar 文件并使用相同的 Oracle 数据库。
-
你如何调试这些东西?
log.info(testEntity.getDate());?不检查 db 列?