我们有2个具有@ManyToOne关系的实体。JPA insertable = false updatable = false id创建时未更新
当我们在@Transactional方法中创建一个EntityB实例entityAld(insertable = false updatable = false)时,它不会自动更新 - 即使entityA实例已经持久化了。
有没有办法解决这个问题?我们是否必须在ctor中手动更新它?
@Entity
public class EntityA {
@Id
@GeneratedValue
private Long id;
public EntityA() {
super();
}
...
}
@Entity
public class EntityB {
@Id
@GeneratedValue
private Long id;
@ManyToOne(optional = true, fetch = FetchType.LAZY)
private EntityA entityA;
@Column(name = "entityA_id", insertable = false, updatable = false)
private Long entityAId;
public EntityB() {
super();
}
public EntityB(EntityA entityA) {
super();
this.entityA = EntityA;
}
...
}
编辑:也试过以下,但仍entityAId = NULL交易(即使entityA是之前持续)内。
@Entity
public class EntityB {
@Id
@GeneratedValue
private Long id;
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "entityA_id", insertable = false, updatable = false)
private EntityA entityA;
@Column(name = "entityA_id")
private Long entityAId;
...
}
你是如何坚持'EntityB'与'EntityA'关联的?请编辑答案以添加代码。如果您使用其构造函数创建entityB并传递了entityA,那么发布的第一个代码片段应该可以工作,所以我认为问题与逻辑和事务有关。另一个评论是,如果你没有设置正确的'entityAId'值,你发布的第二个代码将不会保持关系。 – Guillermo