【发布时间】:2016-01-21 01:59:08
【问题描述】:
大家好,
这些天我遇到了@OneToMany 持久对象的问题。有问题的地方是我正在尝试创建两个对象(一个是 OneToMany,另一个是 ManyToOne),我想持久化 @OneToMany 一个,并自动将 @ManyToOne 持久化到数据库中。 (所有表都设置为自增,Collection 在 Komponenta.class 的构造函数中初始化,我只放了与这个问题相关的部分)。这是我的代码:
public class Komponenta implements Serializable {
@Id
private Integer idKom;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idKom")
private Collection<Ima> imaCollection = new ArrayList<>();
}
public class Ima implements Serializable {
@Id
private Integer idIma;
@JoinColumn(name = "idKom", referencedColumnName = "idKom")
@ManyToOne
private Komponenta idKom;
}
// runnable part
Tools.em.getTransaction().begin();
Komponenta k = new Komponenta();
Ima i = new Ima();
Collection<Ima> list = k.getImaCollection();
list.add(i);
k.setImaCollection(list);
i.setIdKom(k);
Tools.em.persist(k);
Tools.em.getTransaction().commit();
我从控制台输出收到此类错误:
内部异常:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“idKom”不能为空 错误代码:1048
【问题讨论】:
-
你不认为 id 不应该为空吗?您没有为“idKom”设置任何值
标签: java database jpa runtime-error