如何在持久化时忽略hibernate实体中的子类

时间:2016-09-29 09:28:51

标签: java hibernate jpa inheritance

我有一个像这样的简单实体类

@Entity
public class Car{
   @Column protected String name;
}

一切都很好,但现在我想使用这个实体的子类或匿名类。

public class TestCar extends Car{
    TestCar(){ this.name = "Test"; }
}

void foo(){
   Car c = new Car(){
             { this.name = "Lone"; }
           };
   // ...
}

这些子类仅用于实例化,可以通过hibernate完全忽略。

但是当我尝试保存实体时,我得到一个"未知实体" -Exception。

有没有办法让hibernate忽略这样的子类?

编辑:如果我们能找到问题的答案,那就太好了。讨论所有其他(众所周知的)模式并没有帮助(至少对我而言)。您应该看到这只是一个非常简单的示例来澄清问题。 (可能你应该忽略用例)

刚发现这可能重复(也没有解决方案):How to persist an entity from an non-entity subclass in Hibernate

1 个答案:

答案 0 :(得分:0)

它不起作用。

恕我直言,你应该重新考虑你的设计。真的是TestCar还是匿名Car类是Car的子类型?我认为您使用错误的工具来创建实例。您可以使用Builder模式。