将一个JPA实体转换为另一个

时间:2017-10-02 12:43:07

标签: java hibernate jpa adapter

将一个JPA实体转换为另一个实体的最佳方法是什么?

这是临时解决方法所必需的,其中具有特定条件的实体实例的子集需要被翻译并保持为不同类型的实体。

我尝试使用某种非传统的Adapter类(不共享公共接口):

public class JediKnightToSithLordAdapter extends SithLord {
  public JediKnightToSithLordAdapter(JediKnight jediKnight) {
     // call setter methods
  }
}

然而,这会导致一个"非实体对象实例传递给evict" IllegalArgumentException异常。

我还考虑了以下内容:

使用标准的适配器模式创建一个由原始实体和适配器类实现的接口(但是,这种解决方法只是暂时的,因此会导致不必要的混乱)

OR

将静态转换方法添加到目标实体类

@Entity
public class SithLord {
    // ... 

    public static SithLord of(JediKnight jediKnight) {
        SithLord sithLord = new SithLord();
        // populate sithLord fields
        return sithLord;
    }
} 

OR

静态方法应该移动到单独的Converter / Translator类吗?

是否有其他更好的教科书方法来做到这一点?

0 个答案:

没有答案