【发布时间】:2016-11-30 16:55:29
【问题描述】:
我添加了 2 个休眠模型对象 第一张表
@Entity
@Table(name = "ACTIVITIES")
public class ActivityMO extends ModelBase {
@Column(name = "CA_ID", nullable = false, insertable = true,updatable = true, length = 22, precision = 0)
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "CSM_ACTIVITIES_SEQ")
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "activityId", cascade = {CascadeType.ALL})
@Fetch(FetchMode.JOIN)
List<ActivitiesProductsMO> relatedProducts;
...getters / setters
}
另一张桌子是
@Entity
@Table(name = "ACTIVITIES_PRODUCTS")
public class ActivitiesProductsMO {
@Column(name = "CAP_ID")
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "ACTIVITIES_PRODUCTS_SEQ")
private Long id;
@Column(name = "CAP_ACTIVITY_ID")
private Long activityId;
@Column(name = "CAP_PRODUCT_ID")
private Long productId;
...getters/setters
}
重点是用ActivityMO.id 值填充ActivitiesProductsMO.activityId 的每个数据库记录
即 如果我创建一个 id = 555 的活动记录 我将获得另一个 activity_product 记录,activityId 为 555
我怎样才能让它工作? 谢谢!
【问题讨论】:
-
请澄清:如果您插入一个新的 ActivityMO,您是要更改所有现有的 ActivitiesProductsMO 以指向该 ActivityMO(通过其 activityId 映射字段),还是要在离开时创建一个新的 ActivitiesProductsMO所有其他人都没有动过?我想它是第二个......但我的问题是:为什么是一个?您使用 OneToMany 定义了您的实体,这意味着对于每个 ActivityMO 可以有多个链接的 ActivityProductsMO。
-
嗨。它不完全是一个,它只是一个例子。如果 activityMO 带有 20 个 activityProductMOs 列表,则需要创建 20 个新的 ACTIVITY_PRODUCT 记录,并且所有这些记录都需要具有 activityId = activityMO.id
标签: java database oracle hibernate