JPA一对多保存维护端时,报被维护端属性为空异常?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

JPA一对多保存维护端时,报被维护端属性为空异常?报错

爱吃鱼的程序员 2020-06-14 21:00:08 80

表A

@ManyToOne
private B b;

表B

@Column(length = 10, nullable = false, unique = true)
private String name;

@OneToMany(cascade = CascadeType.REFRESH, mappedBy = "b")
private Set<A> alist;

Service(已加入@Service和@Transactional)

A a = new A();

a.setB(new B(1));

service.save(a);

这时报错:

not-null property references a null or transient value : com.entity.B.name

可是我在JUnit里面用同样的确可以 ,这是怎么回事啊 @红薯

Java
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-14 21:00:26

    具体功能不明白你的流程,其实你如果是一次性获取出来,然后打印出来是可以的,你可以测试一下,但是如果你保存的对象在另一个方法中去使用其映射的部分,可能是获取不到的。现实项目中经常出现这样问题流程是这样的,A和B是一对多关系,我现在要插入一条新的A,A里面有B的外键对象,所以就setB(newB(1)),但是因为B里面有个不为空的属性,这里就报错了,我关联也没设置级联更新,这里怎么会报错呢

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程