Dozer:映射列表时类强制转换异常

发布于 2024-10-14 04:53:56 字数 601 浏览 2 评论 0原文

我有两个值对象(ValueObjectA 和 ValueObjectB),每个都有 name1 和 name2

然后我有两个列表,每个列表都包含一个值对象,我计划用推土机映射它。

一旦我访问映射的“listOfB”,我就会得到一个类转换异常,因为推土机将 ValueObjectA 类型的对象映射到 ValueObjectsB 列表中。

是否可以在不迭代列表并逐个对象地映射的情况下映射这两个列表?

示例代码:

...    
// prepare object A
List<ValueObjectA> lostOfA = new LinkedList();
ValueObjectA voA = new ValueObjectA();
voA.setName1("foo");
voA.setName2("bar");
lostOfA.add(voA);

// map object A to object B 
List<ValueObjectB> listOfB = new LinkedList();
mapper.map(lostOfA, listOfB);

for (ValueObjectB voB:listOfB ){
...

I have two value objects (ValueObjectA and ValueObjectB), each with name1 and name2

Then I have two lists, each holds one of the value objects, which I plan to map with dozer.

As soon as I access the mapped 'listOfB', I get a Class Cast Exception, since dozer maps objects of type ValueObjectA into the list of ValueObjectsB.

Is it possible to map these two lists without iterating the lists and map object by object?

sample code:

...    
// prepare object A
List<ValueObjectA> lostOfA = new LinkedList();
ValueObjectA voA = new ValueObjectA();
voA.setName1("foo");
voA.setName2("bar");
lostOfA.add(voA);

// map object A to object B 
List<ValueObjectB> listOfB = new LinkedList();
mapper.map(lostOfA, listOfB);

for (ValueObjectB voB:listOfB ){
...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的背包 2024-10-21 04:53:56

不容易。

请查看 Dozer 论坛上的此帖子

引用:

“处理嵌套集合
自动,但你是对的
顶级集合需要
迭代了一遍。目前还没有
更优雅的方式来处理这个问题。”

Not easily.

Take a look at this thread on the Dozer forum.

To quote:

"Nested collections are handled
automatically, but you are correct
that top level collections need to be
iterated over. Currently there isn't a
more elegant way to handle this."

第几種人 2024-10-21 04:53:56

尝试为两个类定义映射。 Dozer 将在运行时自动使用此映射并相应地转换对象。

例如(伪代码):

<mapping>
  <classA>ValueObjectA</classA> 
  <classB>ValueObjectB</classB> 
<mapping>

我猜两个类中的字段名称是相同的。如果没有,您需要在上面的映射中指定它们。

Try to define a mapping for both class . Dozer will use this mapping at run-time automatically and convert objects accordingly.

for example (psudo code) :

<mapping>
  <classA>ValueObjectA</classA> 
  <classB>ValueObjectB</classB> 
<mapping>

I guess the fields name in both class are same. If not you need to specify them in the above mapping.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文