【发布时间】:2020-07-05 23:06:46
【问题描述】:
quote 使用 JPA 时,会出现一个问题,即在没有正确外键的情况下存储。 引用 ( spring - JPA 사용시 올바른 外键 없이도 저장이 되는 문제가 발생 )
关系(加入)是通过 JPA 创建的。 prodDetail.prodNo 有 Prod.no 作为外键。
// 休眠
更改表 prod_detail
添加约束 FKemc8ttnx3c8rl0d3u9s7xr964
外键(无)
参考产品(否)
我认为没有存储 Prod.no 的具有外键-col 的 ProdDetail 对象不会被保存(=插入),但它被保存了。 你可以做相反的事情。为什么?
所以我在 mysql 工作台上试试这个。
错误 1452:1452:无法添加或更新子行:外键约束失败 发生错误
为什么JPA没有错误?
这是我的代码
请帮助我。 (如果你是韩国人?请用韩语跟我说话) 谢谢~
@Entity
public class Prod {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "no")
private Long no;
private String name;
private String thumbnailUrl;
private Long originPrice;
private Long discPrice;
private String description;
private LocalDateTime createdAt;
@Transient
private boolean inBasket;
}
-----------------------------------------------------
@Entity
public class ProdDetail {
@Id
@GeneratedValue
private Long id;
private String content;
private String imageUrl;
private LocalDateTime createdAt;
@PrePersist
public void createdAt() {
this.createdAt = LocalDateTime.now();
}
@ManyToOne
@JoinColumn(name="prod_no" )
private Prod prod;
-----------------------------------------------------
// jUnit test
@Test
public void insertTodetailTest() {
ProdDetail pd = new ProdDetail();
pd.setContent("test product 1");
pd.setImageUrl("test Product url");
detailRepo.save(pd);
System.out.println("ok");
}
【问题讨论】:
标签: jpa