Java Hibernate映射内部类,错误“;无法确定:timeStamps";的类型;
我有一个实体“Task”,它需要一个名为“timestamps”的内部组件,该组件保存任务提交、启动和完成时的值Java Hibernate映射内部类,错误“;无法确定:timeStamps";的类型;,java,json,hibernate,jpa,Java,Json,Hibernate,Jpa,我有一个实体“Task”,它需要一个名为“timestamps”的内部组件,该组件保存任务提交、启动和完成时的值 @Entity public class Task { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer Id; private String Status; private Timestamps timestamps; // getters
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
private Timestamps timestamps;
// getters setters
}
然后我创建了Timestamps类
public class Timestamps {
private Timestamp submitted;
private Timestamp started;
private Timestamp completed;
//getter and setters
}
当我以JSON格式检索信息时,我应该如何进行这种映射呢
# task
{
"task": # ASCII string
"status": # one of "submitted", "started", "completed"
"timestamps": {
"submitted": # unix/epoch time
"started": # unix/epoch time or null if not started
"completed": # unix/epoch time or null if not completed
}
}
如果您不想在DB中保留
时间戳
,而只想在DTO中使用它,这将有助于您:
@Transient
注释用于指示不在数据库中保留字段
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@Transient
private Timestamps timestamps;
// getters setters
}
如果要将
时间戳
持久化为一种关系,则应执行以下操作:
@Entity
public class Timestamps {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private Timestamp submitted;
private Timestamp started;
private Timestamp completed;
//getter and setters
}
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@ManyToOne
private Timestamps timestamps;
// getters setters
}
如果您不想在DB中保留
时间戳
,而只想在DTO中使用它,这将有助于您:
@Transient
注释用于指示不在数据库中保留字段
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@Transient
private Timestamps timestamps;
// getters setters
}
如果要将
时间戳
持久化为一种关系,则应执行以下操作:
@Entity
public class Timestamps {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private Timestamp submitted;
private Timestamp started;
private Timestamp completed;
//getter and setters
}
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@ManyToOne
private Timestamps timestamps;
// getters setters
}
您可以在时间戳上添加@Embeddeble注释。Hibernate将字段映射为同一表中的列。
您可能还需要在Task中的Timestamps字段中嵌入一个@(我无法确定双方是否都需要注释) 您可以在时间戳上添加@Embeddeble注释。Hibernate将字段映射为同一表中的列。
您可能还需要在Task中的Timestamps字段中嵌入一个@(我无法确定双方是否都需要注释) @Spara It不起作用:我没有为entity:com.tasks.Timestamps指定标识符。如果您不想在数据库中保留时间戳,可以使用
@Transient
。如果要将时间戳作为关系在DB中分配,则应将其作为带有标识符的实体,然后是与任务的@ManyToOne
关系enitity@Spara它不起作用:我没有为entity:com.tasks.Timestamps指定标识符。如果您不想在数据库中保留时间戳,可以使用@Transient
。如果你想把时间戳作为一个关系在数据库中,你应该把它作为一个带有标识符的实体,然后用一个@ManyToOne
与任务entityit的关系就可以了。但是,我希望将时间戳作为任务列保存在数据库中。令人恼火的是,我需要以这种特定的格式制作JSON,它可以正常工作。但是,我希望将时间戳作为任务列保存在数据库中。令人恼火的是,我需要以这种特定的格式制作JSON。