我想使用Date对象作为主键。但我有一个错误。如何使用java.util.Date对象作为主键?
MyEntity:
@Entity
public class MyEntity implements Serializable {
@Id
private Date date;
...
错误日志:
引起: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“myService”的bean时出错:不满意的依赖项 通过字段'myEntityRepository'表示;嵌套异常 是org.springframework.beans.factory.BeanCreationException:错误 创建名为'routeMeetingDayRepository'的bean:调用 init方法失败;嵌套异常是 java.lang.IllegalArgumentException:这个类[类 com.MyEntity] 没有 定义IdClass
所以,我在我的实体中添加了@IdClass:
MyEntity:
@Entity
@IdClass(Date.class)
public class MyEntity implements Serializable {
@Id
private Date date;
...
新错误日志:
启动ApplicationContext时出错。显示自动配置 报告在启用“debug”的情况下重新运行您的应用程序。 2017年12月28日 11:49:00.859 ERROR 23518 --- [主要] o.s.boot.SpringApplication:应用程序启动失败
org.springframework.beans.factory.BeanCreationException:错误 在类路径中定义名为'entityManagerFactory'的bean 资源 [组织/ springframework的/引导/自动配置/ ORM / JPA / HibernateJpaAutoConfiguration.class]: 调用init方法失败;嵌套异常是 org.hibernate.AnnotationException: java.util.Date没有持久性 id属性
...
......引起: org.hibernate.AnnotationException: java.util.Date没有持久性 id属性 ...
答案 0 :(得分:0)
我遇到了同样的问题,很容易解决。
只需在PK之前添加此@Temporal(TemporalType.DATE)
即可。
应用程序需要在此字段中添加值,因为它不是自动生成的。
@Id
@Temporal(TemporalType.DATE)
private Date date;