MANAGED_CLASS_MAPPING_ERROR给定javaClass'class java.util.ArrayList'被映射到ListType,预期为ManagedType

问题描述 投票:1回答:1

我们开始在我们的应用程序中尝试使用JaVers。我们希望跟踪用户下达的订单更改。因此,这是您的典型订单对象,其中包含主要订单对象,物料,物料选项等。大约一半的时间我们运行测试程序时,都会收到此异常:

130 [main]信息org.javers.core.JaversBuilder-JaVers实例启动&ready异常在线程“主要” JaversException中:给定javaClass'class的MANAGED_CLASS_MAPPING_ERRORjava.util.ArrayList'映射到ListType,预期为ManagedType,位于org.javers.core.metamodel.type.TypeMapper.getJaversManagedType(TypeMapper.java:149)在org.javers.core.metamodel.type.TypeMapper.getJaversManagedType(TypeMapper.java:132)在org.javers.core.metamodel.object.GlobalIdFactory.createId(GlobalIdFactory.java:39)在org.javers.core.graph.LiveCdoFactory.create(LiveCdoFactory.java:24)在org.javers.core.graph.EdgeBuilder.asCdo(EdgeBuilder.java:39)处org.javers.core.graph.EdgeBuilder.buildSingleEdge(EdgeBuilder.java:32)在org.javers.core.graph.ObjectGraphBuilder.buildSingleEdges(ObjectGraphBuilder.java:81)在org.javers.core.graph.ObjectGraphBuilder.buildEdges(ObjectGraphBuilder.java:71)在org.javers.core.graph.ObjectGraphBuilder.buildGraphFromCdo(ObjectGraphBuilder.java:59)在org.javers.core.graph.ObjectGraphBuilder.buildGraph(ObjectGraphBuilder.java:48)在org.javers.core.graph.LiveGraphFactory.createLiveGraph(LiveGraphFactory.java:39)在org.javers.core.diff.DiffFactory.buildGraph(DiffFactory.java:109)在org.javers.core.diff.DiffFactory.compare(DiffFactory.java:64)处org.javers.core.JaversCore.compare(JaversCore.java:104)

我们只是重新运行该程序,最终它可以工作。代码基本上看起来像这样。

// Original database object
OrderVO oldOrder = // load from database.

// Changed database object
OrderVO newOrder = // load from database.
// Change the email
newOrder.setEmail("[email protected]");
// Simulate changing quantity and item id on items
for (OrderItemVO OrderItemVO : newOrder.getItems()) {
  OrderItemVO.setMerchantItemId(OrderItemVO.getMerchantItemId() + "A");
  OrderItemVO.setQuantity(OrderItemVO.getQuantity().add(1));
}

// Remove the first item
OrderItemVO[] items = new OrderItemVO[newOrder.getItems().length - 1];
System.arraycopy(newOrder.getItems(), 1, items, 0, items.length);
newOrder.setItems(items);

// Run comparison
Javers javers = JaversBuilder.javers().withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE).build();
Diff diff = javers.compare(oldOrder, newOrder);
javers
1个回答
0
投票

我有同样的问题,如果解决了,您如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.