有一个多-1关系小学生小组:学生被分配到一个formGroup和一个formGroup可以包含许多学生.我试图实现一个InverseRelationShadowVariable,看过您的视频/教程https://www.youtube.com/watch?v=ENKHGBMDaCM (这与我了解的最新optaplanner文档不太相符)。
FormGroup提取物
@Entity
@PlanningEntity
public class FormGroup {
@InverseRelationShadowVariable(sourceVariableName = "formGroup")
@OneToMany(mappedBy = "formGroup", fetch = FetchType.EAGER)
private List<Pupil> pupilList = new ArrayList<Pupil>();
public List<Pupil> getPupilList() {
return pupilList;
}
public Integer getPupilCount() {
return pupilList.size();
}瞳孔提取物
@Entity
@PlanningEntity
public class Pupil
@PlanningVariable(valueRangeProviderRefs = "formGroupRange")
@ManyToOne
private FormGroup formGroup;配置提取
<solutionClass>org.acme.optaplanner.domain.Plan</solutionClass>
<entityClass>org.acme.optaplanner.domain.Pupil</entityClass>
<entityClass>org.acme.optaplanner.domain.FormGroup</entityClass> 我相信我完全遵循了视频中的步骤(难道我们不都这么说),但在解决问题的时候,我得到了数百个错误.重复下列内容
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
任何感激不尽的暗示。
发布于 2022-09-02 16:21:58
InverseRelationShadowVariable在真正的规划实体(Pupil)和规划值(FormGroup)之间创建双向关系。如果您将计划域类重用于其他用途(如ORM持久性或序列化),则可能会出现问题。
在这种情况下,Jackson无法序列化瞳孔,因为它引用了一个FormGroup,该列表包含对该瞳孔的引用。看见?无穷无尽的循环。
通过在逆关系属性的顶部添加@JsonIgnore注释并中断杰克逊的循环,可以解决这个问题:
@Entity
@PlanningEntity
public class FormGroup {
@JsonIgnore // THIS IS THE FIX
@InverseRelationShadowVariable(sourceVariableName = "formGroup")
@OneToMany(mappedBy = "formGroup", fetch = FetchType.EAGER)
private List<Pupil> pupilList = new ArrayList<Pupil>();
public List<Pupil> getPupilList() {
return pupilList;
}
public Integer getPupilCount() {
return pupilList.size();
}
...https://stackoverflow.com/questions/73585102
复制相似问题