我从for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++){
Text text = new Text("Hello World!");
gridPane.getChildren().add(text);
}
}
到Bp
的比例为1:n。
要加载包含相关BpHistorisiert
ID的Bp
BpHistorisiert
这很好用,对 Bp bp= entityManager.find(Bp.class, anId);
bp.getBpHistorisiertList();
的调用按预期加载了n侧延迟。但是,当bp分离时,bp中的bpHistorisiert列表将明确重置为getBpHistorisiertList()
。我可以在调试器中看到,这是由OpenJPA null
的分离功能明确完成的。
所以我的问题是:当我使用分离的实体时,如何加载惰性关系并保留值?
Bp
EntityManager
BpHistorisiert
@Entity
@Table(name = "BP", schema = "INFOP_STAMMDATEN")
public class Bp extends BaseEntity implements EntityId, Serializable {
/** technische ID */
@Id
@Column(name = ID)
private Long id;
@Valid
@OneToMany(mappedBy = "bp", orphanRemoval = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<BpHistorisiert> bpHistorisiertList = new ArrayList<>();
}
答案 0 :(得分:1)
答案是:通过OpenJPA问题跟踪器报告问题并等待解决。
根据the docs,您不应观察到您描述的行为。
答案 1 :(得分:0)
感谢@crizzis回答,我找到了这种行为的原因。我们实际上已经设置了
<property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=true)"/>
在我们的persistence.xml
中。结果是,所有实体的所有惰性文件都在detach时设置为java默认值。对于懒惰的List
,这是null
。
是的,这是OpenJPA功能,而不是bug。
甚至所有这些都被明确记录在案:https://issues.apache.org/jira/browse/OPENJPA-1913?attachmentSortBy=fileName