Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
为什么我的外键在使用JPA保存到h2 db时为空_Jpa_Jpa 2.0 - Fatal编程技术网

为什么我的外键在使用JPA保存到h2 db时为空

为什么我的外键在使用JPA保存到h2 db时为空,jpa,jpa-2.0,Jpa,Jpa 2.0,这两种代码之间的区别是什么。第一个在我的外键上显示null,它是individualId。第二个不是。为什么? //第1代码: @Entity @JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) public class Individual { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "INDIVI

这两种代码之间的区别是什么。第一个在我的外键上显示null,它是individualId。第二个不是。为什么?

//第1代码:

@Entity
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Individual {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "INDIVIDUAL_ID")
    private Long individualId;

    @OneToMany(mappedBy="individual",cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Identification> identifications = new ArrayList<Identification>();
}

@Entity
public class Identification {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "IDT_ID")
    private Long id;

    @ManyToOne
    @JoinColumn(name="individualId")
    private Individual individual;
@实体
@JsonIgnoreProperties({“HibernateLazInitializer”,“handler”})
公共阶级个人{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“个人ID”)
私人长个体;
@OneToMany(mappedBy=“个人”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私有列表标识=新的ArrayList();
}
@实体
公共类标识{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“IDT\u ID”)
私人长id;
@许多酮
@JoinColumn(name=“individualId”)
个人;
//第二代码

//在第一个代码中替换了@OneToMany&然后我就不在Identification类中添加@ManyToOne,它工作得很好。为什么

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "INDIVIDUAL_ID", referencedColumnName = "INDIVIDUAL_ID")
private List<Identification> identifications = new ArrayList<Identification>();
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name=“个人识别码”,referencedColumnName=“个人识别码”)
私有列表标识=新的ArrayList();

当我在谷歌上搜索JPA教程时,第一个代码是我经常阅读的代码。在父类中声明@OneToMany并添加mappedBy,在子类中声明@manytone。但是为什么第二个代码比第一个代码工作得完美呢?它只允许我在父类中声明@OneToMany?

在类
标识
@JoinColumn
的名称与类中的任何列都不匹配
Individual
。它必须是数据库中列的名称,即Individual\u ID:

@JoinColumn(name="INDIVIDUAL_ID")

你说一些持久性不起作用,但没有公布实际的持久性代码,对象是如何创建的,设置了什么,没有设置什么,发布了什么SQL。这些对象是在我填写前端的输入文本框时创建的。这些对象是通过angularjs传递的。现在使用的SQL是spring.jpa.show-SQL=true,数据源是org.h2同样,即使我面临这个问题,个人ID也是空的。