如何在集合中映射一个PlanningId注释以进行变基方法?

时间:2019-08-05 08:44:44

标签: java multithreading rebase optaplanner

对于多线程解决方案,我试图在标识字段或getter方法上映射一个planningId。

在我们的模型中,某些计划实体具有其他计划实体或问题事实的集合。

公共类用户{

@PlanningId
private String username;

...
}

公共类CloudComputer {

@PlanningId
private Long id;
//Considering all conditions, possible user changes all over time 
//It works well in single thrad, but it does not work in multithread.
private List<User> subtitueUsers = new ArrayList<>();

...

}

在rebase方法中, 我比较了CloudComputer类。

ColludComputer的内存地址因线程而异。

但是subtitueUsers在此解决方案和目标解决方案之间具有相同的内存地址。

有时,subtituteusers包含在此解决方案和目标解决方案之间具有相同内存地址的用户类。

有什么方法可以深克隆包括subtituteUsers的云计算机? 还是有其他方法可以绕开这个问题?

1 个答案:

答案 0 :(得分:1)

要进行深度克隆,请在@DeepPlanningClone成员(字段或getter)上使用subtitueUsers

或者,也可以在@DeepPlanningClone类上使用User。是的,这实际上更好。

(不需要两者都做。)