如何通过Dozer映射文件为属性设置值?
我正在使用推土机映射。我有两个pojo1和pojo2。要映射到 pojo2 的 pojo1 值。 Pojo1 有 3 个属性,Pojo2 有 4 个属性。我能够将 pojo1 的 3 个属性映射到 pojo2,但要映射第四个属性,我在 pojo1 中没有属性。要映射第四个属性,我无法从 pojo1 获取值,我需要直接从 Enum 获取值。请帮助我是否可以通过映射文件为任何属性赋予价值?
直接来自枚举的值,而不是来自 pojo1 第四个属性
谢谢!
I am using Dozer mapping. i have two pojo1 and pojo2. pojo1 values to be mapped to pojo2. Pojo1 has 3 properties and Pojo2 has 4 properties. i am able to map 3 properties form pojo1 to pojo2 but to map fourth property i dont have property in pojo1. to map fourth property i cannot take value from pojo1, directly i need to give the value by taking from Enum. Please help me is it possible to give value to any property through mapping file?
value from enum directly not from pojo1
fourth property
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
据我所知,这不可能以方便的方式实现。实现此 atm 的唯一方法是使用自定义转换器,或修改 POJO 之一。
使用自定义转换器,您可以将 pojo1.field3 映射到 pojo2.field4。转换器完全忽略 pojo1.field3,仅将 pojo2.field4 设置为您的枚举值。
另一个解决方案是只修改 pojo1 并添加一个始终返回枚举值的 field4。
第三种解决方案是修改pojo2,只需在默认构造函数中设置field4即可。如果您无法修改默认构造函数,可以使用自定义创建方法或自定义 bean 工厂 来实现相同的目的。
我已经做了很多推土机映射,并且也希望有一些更方便的解决方案。不幸的是我认为没有自动取款机。
让我知道它对你来说效果如何!
As far as I know this is not possible in a convenient way. The only way to do this atm is by either having a custom converter, or by modifying one of the POJOs.
With a custom converter you could just map pojo1.field3 to pojo2.field4. The converter completely ignores pojo1.field3, and just sets the pojo2.field4 to your enum value.
Another solution is to just modify pojo1 and add a field4 which always returns the enum value.
And the third solution is to modify pojo2, and just set field4 in the default constructor. If you can't modify the default constructor, you can use a custom create method or a custom bean factory to achieve the same.
I've been doing dozer mappings a lot, and would like some more convenient solution for this too. Unfortunately I don't think there is any atm.
Let me know how it works out for you!