【发布时间】:2017-02-07 13:23:02
【问题描述】:
我有一个像这样的简单实体类
@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 可以完全忽略。
但是当我尝试保存实体时,我得到一个“未知实体”-异常。
有没有办法让hibernate忽略这些子类?
编辑:如果我们能找到问题的答案,那就太好了。讨论所有其他(众所周知的)模式没有帮助(至少对我没有帮助)。您应该看到这只是一个非常简化的示例,用于澄清问题。 (也许你应该忽略用例)
刚刚发现这个可能的重复项(也没有解决方案):How to persist an entity from an non-entity subclass in Hibernate
【问题讨论】:
-
您可以尝试将其转换为超类,但我怀疑它会起作用 - 只是从未测试过。为什么不能简单地创建
Car而不是继承它? -
投射不起作用。我唯一的解决方案是将所有属性的完整副本复制到一个新的“普通”汽车对象中,但这非常不方便。
-
这就是我提到的。为此创建工厂方法,它将变得方便和简单。
标签: java hibernate jpa inheritance