我正在尝试使用 hibernate 连接三个表。 当我读取方法时它可以工作,但是当我保存时我遇到了空指针问题 第三个表Id是auto_increment。
感谢您的帮助!
这是连接表(THIRD 和 ONE 表 ID 不应为 null )
@Entity
@Table(name = "SECOND_TABLE")
public class SecondTableEntity
implements Serializable {
@Id
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "FIRST_TABLE_KEY")
private FirstTable firstTable;
@Id
@MapsId("id")
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "THIRD_TABLE_ID", referencedColumnName = "THIRD_TABLE_ID")
private ThirdTable thirdTable;
@Column(name = "SECOND_TABLE_VALUE")
private String secondTable;
}
在此表中,ID 为 auto_increment
@Entity
@Table(name = "THIRD_TABLE")
public class ThirdTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "THIRD_TABLE_ID")
private Integer id;
@Column(name = "THIRD_TABLE_NAME")
private String thirdTableName;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "SECOND_TABLE_ID")
private List<SecondTable> secondTable = new ArrayList<>();
这里的Id也是自动递增的
@Entity
@Table(name = "FIRST_TABLE")
public class FirstTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "FIRST_TABLE_ID")
private Integer firstTable;
@Column(name = "FIRST_TABLE_NAME")
private String firstTableName;
问题是hibernate应该在保存SECOND_TABLE之前保存一个表和第三个表
有什么办法可以做到这一点吗?
感谢帮助
最佳答案
抱歉,我发现了这个问题。
我在 SECOND_TABLE 中添加了嵌入键,而不是在两个对象上都添加了 @Id
关于java - 无法在表之间建立连接 只能进行读取操作,但不能进行插入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679648/