在这种情况下,我想从数据库中获取实体并将其映射到具有更多或更少属性的新视图域模型,如果此视图模型具有更多属性,则使用默认值对额外属性进行签名。我想在JPA中使用地图技术来完成此操作,这类似于MyBatis映射机制。 那怎么办?
答案 0 :(得分:0)
只需加载实体,将其复制到新实体中,使用所需的默认值填充未设置的属性,然后使用JPA(可能通过Spring Data JPA)存储它。
要将数据从一个实体复制到另一个实体,您可能希望查看int Dozer
或类似的库。
您也可能滥用Spring Data的投影支持来查询原始实体,但使用类似于以下方法的方法将其作为目标实体返回:
interface SourceRepository<Source, Long> extends CrudRepository<Source, Long> {
List<Target> findTargetBy();
}
然后可以使用另一个存储库再次存储生成的Target
实体(您可能必须将版本和标识属性设置为null
,以使框架清楚这些是新实体。