Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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:将2个ArrayList放入1个数据库表中_Java_Jpa_H2 - Fatal编程技术网

Java JPA:将2个ArrayList放入1个数据库表中

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)

我有一个Java类,它表示员工的工作时间,名为
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提供商如何知道在检索时将它们放在哪个列表中?!!!!!或者,它怎么能像你提议的那样持续下去?!这也是我想到的唯一方法,但我希望能够绕过创建另一个类,因为它需要对逻辑方法进行大量更改。看来没有别的办法了,谢谢!这也是我想到的唯一方法,但我希望能够绕过创建另一个类,因为它需要对逻辑方法进行大量更改。看来没有别的办法了,谢谢!