Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Hibernate 一对多关系_Hibernate_Jpa - Fatal编程技术网

Hibernate 一对多关系

Hibernate 一对多关系,hibernate,jpa,Hibernate,Jpa,考虑下面提到的两个表- 表1(标识栏、名称栏) 表2(uid列、代码列1、代码列2) 其中, id\u col是表1的主键 uid\u col是表2的主键 并且,id_col与code_col_1和code_col_2都有一对多关系 记录可能看起来像:- 表1 1,xxx 2,yyy 表2 11,1,2 12,2,1 12,2,2 在以下课程中,JPA会是什么样子? @Entity @Table(name = "Table1") public class T1 { @OneTo

考虑下面提到的两个表-
表1(标识栏、名称栏)
表2(uid列、代码列1、代码列2)

其中,
id\u col是表1的主键
uid\u col是表2的主键
并且,id_col与code_col_1和code_col_2都有一对多关系

记录可能看起来像:-
表1
1,xxx
2,yyy

表2
11,1,2
12,2,1
12,2,2

在以下课程中,JPA会是什么样子?

@Entity
@Table(name = "Table1")
public class T1 {
    @OneToMany(targetEntity=T2.class, mappedBy="??????", cascade=CascadeType.ALL)
    private List<T2> t2; //???not sure about this
}

@Entity
@Table(name = "Table2")
public class T2 {
    @ManyToOne
    @JoinColumn(name="code_col_1")
    private T1 t1;  //???not sure what goes here
}
@实体
@表(name=“表1”)
公共类T1{
@OneToMany(targetEntity=T2.class,mappedBy=“???????”,cascade=CascadeType.ALL)
私人列表t2;/??对此不确定
}
@实体
@表(name=“表2”)
公共课T2{
@许多酮
@JoinColumn(name=“code\u col\u 1”)
私人T1;/??不确定这里是什么
}

这不是一对多的关联;相反,它是从
T2
T1
的两个独立的多对一关联。您可以在
T2
侧映射这两个:

@Entity
@Table(name = "Table2")
public class T2 {
  @Id // map whatever generator you'd like
  private long id;

  @ManyToOne
  @JoinColumn(name="code_col_1")
  private T1 t1_code1;

  @ManyToOne
  @JoinColumn(name="code_col_2")
  private T1 t1_code2;
}

将反向的一对多关联从
T1
映射到
T2
不是一个好主意,因为两个集合中存在(某些)相同元素的风险,这将在插入/删除过程中导致各种问题。

表1的主键是什么?表2的主键是什么?“在一列中记录”是什么意思?编辑了这个问题…希望它现在更清晰谢谢你的帮助!但我仍然感到困惑,由于多对一关联正在发挥作用,表2是否可能为code_col_1或code_col_2保留空值,比如(13,null,null)?@Mohammad-是的,默认情况下@manytone关联在所有者端可以为空。如果您希望不允许空值,可以通过
optional
属性:`@ManyToOne(optional=false)来实现