我想在我的后端代码中使用Scala Slick,并且还要求支持需要将我的域模型公开为普通Java POJO的旧版Web服务API。
除了编写手动映射代码之外,还有一些不错的对象映射器库或其他解决方案吗?我之前使用过Orika对象映射器(仅限Java),并且它具有一些很好的功能,例如默认情况下具有相同名称的映射属性,能够按类型提供自定义映射器。
答案 0 :(得分:1)
annotating your Scala objects与[{1}}之类的声音会很有帮助。
这很酷;只需将@BeanProperty标记添加到您的 class字段,get和set(getter和setter)JavaBean方法 将自动为您生成。
我不相信它会处理Java / Scala集合之间的转换(例如它们在@BeanProperty
/ Map
等的相对概念之间),但这本身就会实现一些集合的复制,这本身可能不直观。
答案 1 :(得分:1)
您可以使用可扩展的Slick代码生成器来生成现有类的映射,而不是新的案例类。您可能希望enable = false
代码生成器的某些内部类,并覆盖EntityType以生成简单工厂而不是案例类。见http://slick.typesafe.com/doc/2.0.2/code-generation.html
我将在Scala Days 2014上谈论代码生成器,这也可能有助于解决这个问题。
答案 2 :(得分:0)
另一种选择是使用ModelMapper及其ValueReader SPI。虽然没有与Slick开箱即用的集成,jOOQ integration docs和implementation可以让您了解将一些数据模型一般映射到POJO是多么容易。