我问这个问题的后续行动。我正在做完全相同的事情,但它不起作用,这意味着它仍然给出一个异常,指示尝试实例化一个抽象类:
org.springframework.orm.jpa.JpaSystemException:org.hibernate.InstantiationException:无法实例化抽象类或接口
唯一的区别是我没有将我的类设置为实现 Serializable 接口,但我认为这可能不是原因,所以我怀疑是 Spring 和 Hibernate 版本。
所以基本上抽象类看起来像这样:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="activities")
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public abstract class Activity
{
@Id
@Column(length=Fields.ID_FIELD_SIZE)
protected String id;
....
和两个子类
@Entity
@Table(name="a_activities")
@DiscriminatorValue("A")
public class AActivity extends Activity
{
...
和
@Entity
@Table(name="b_activities")
@DiscriminatorValue("B")
public class BActivity extends Activity
{
...
当使用 ActivityRepository 按 Id 获取 Activity 时,它会给出上述异常。
@Qualifier("activity-repository")
public interface ActivityRepository extends JpaRepository<Activity, String>
{
}
我正在使用 Spring Data 1.2.0 和 Hibernate 4.1.7。
很抱歉作为一个单独的问题提出,但我无法对原始问题发表评论