为了说明我的问题,请考虑以下示例:
@Entity
public class Box implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@OneToMany //No cascade
private List<Item> items;
.
.
.
}
上面我们有一个Box
,它与Item
有一对多的关联
现在说你抓住一个Box
对象并开始用Item
填充它并试着坚持它。它会告诉你,你不能这样做,因为你有一些没有级联的非瞬态嵌套对象(或类似的东西)。
在这种情况下,你只想要一个关联(没有持久性),但你想在对象存活时使用这些字段,当你想要持久化它时你会怎么做?
您是否将Item
列表清空?你用@Transient
注释它吗?
这是我的问题。谢谢!
答案 0 :(得分:1)
如果您的Item对象不是数据库实体,则应将该集合注释为@Transient。如果Item对象映射到数据库,则应使用@OneToMany批注,以便从数据库中读取此集合。要在保存Box对象时阻止存储此集合,可以添加@JoinColumn注释并将可插入和可更新性属性设置为false:
@OneToMany
@JoinColumn((name="BOX_ID", insertable=false, updatable=false)
private List<Item> items;