Java JPA:将2个ArrayList放入1个数据库表中
我有一个Java类,它表示员工的工作时间,名为Java JPA:将2个ArrayList放入1个数据库表中,java,jpa,h2,Java,Jpa,H2,我有一个Java类,它表示员工的工作时间,名为worktime。它包含startTimes的ArrayList,以及endTimes。我尝试使用以下注释将其映射到数据库: @实体 @表(name=“worktime”) 公共课工作时间{ @身份证 @列(name=“worktime\u id”) @GeneratedValue(策略=GenerationType.IDENTITY) 私有int-worktimeId; @列(name=“date”) @时态(TemporalType.DATE)
worktime
。它包含startTimes
的ArrayList
,以及endTimes
。我尝试使用以下注释将其映射到数据库:
@实体
@表(name=“worktime”)
公共课工作时间{
@身份证
@列(name=“worktime\u id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-worktimeId;
@列(name=“date”)
@时态(TemporalType.DATE)
私人日期;
@元素集合
@CollectionTable(name=“工作时间\单位时间”)
@时态(TemporalType.TIME)
private List startTimes=new ArrayList();
@元素集合
@CollectionTable(name=“工作时间\单位时间”)
@时态(TemporalType.TIME)
private List endTimes=new ArrayList();
@许多酮
@JoinColumn(name=“person\u id”)
私人雇员;
...
}
我在数据库中得到的结构如下:
我希望这两个值在同一行中。是否有机会通过索引实现这一点?谢谢你的帮助 最好创建另一个
@实体
并添加一个@OneToMany
关系:
工作时间:
...
@OneToMany
@JoinColumn(name = "worktime_id", referencedColumnName = "worktime_id")
private WorkTimeTimes times;
...
新实体工作时间:
@Entity
@Table(name="worktime_times")
public class WorkTimeTimes {
@Id
@Column(name="worktime_times_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int worktimeTimesId;
@Column(name="worktime_id")
private int worktimeId;
@Temporal(TemporalType.TIME)
@Column(name="start_time")
private Date startTime;
@Temporal(TemporalType.TIME)
@Column(name="end_time")
private Date endTime;
...
}
可能最好创建另一个
@实体
,并添加一个@OneToMany
关系:
工作时间:
...
@OneToMany
@JoinColumn(name = "worktime_id", referencedColumnName = "worktime_id")
private WorkTimeTimes times;
...
新实体工作时间:
@Entity
@Table(name="worktime_times")
public class WorkTimeTimes {
@Id
@Column(name="worktime_times_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int worktimeTimesId;
@Column(name="worktime_id")
private int worktimeId;
@Temporal(TemporalType.TIME)
@Column(name="start_time")
private Date startTime;
@Temporal(TemporalType.TIME)
@Column(name="end_time")
private Date endTime;
...
}
您可以创建名为
WorkDuration
的对象,该对象包含两个属性(startTime
和endTime
),并引用类中该对象的列表。
该对象可以是实体或嵌入对象。您可以创建一个名为
WorkDuration
的对象,该对象包含两个属性(startTime
和endTime
),并引用类中该对象的列表。
该对象可以是实体或嵌入对象。不,您不能将两个列表映射到一个表中,因为JPA提供商如何知道在检索时将它们放在哪个列表中?!!!!!或者,它怎么能像你提议的那样持续下去?!不,您不能将2个列表映射到1个表中,因为JPA提供商如何知道在检索时将它们放在哪个列表中?!!!!!或者,它怎么能像你提议的那样持续下去?!这也是我想到的唯一方法,但我希望能够绕过创建另一个类,因为它需要对逻辑方法进行大量更改。看来没有别的办法了,谢谢!这也是我想到的唯一方法,但我希望能够绕过创建另一个类,因为它需要对逻辑方法进行大量更改。看来没有别的办法了,谢谢!