开发者社区> 问答> 正文

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

表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里面用同样的确可以 ,这是怎么回事啊 @红薯

展开
收起
爱吃鱼的程序员 2020-06-14 21:00:08 578 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

    2020-06-14 21:00:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
对象的生命期管理 立即下载
继承与功能组合 立即下载