对象[id = 1]不是指定的子类

时间:2018-07-18 15:06:00

标签: java spring spring-mvc spring-boot

我正在将电影添加到基础MovieEntity类中,然后再添加一个继承自MovieOtherEnity的标题MovieInfoEntity

MovieInfoEntity具有MovieEntity的外键。 MovieEntity包含从MovieInfoEntity类继承的实体列表。

我有一个测试,在每次测试之后,清除对象的底部。

/**
 * Clean out the db after every test.
 */
@After
public void cleanup() {
    this.contributionRepository.deleteAll();
    this.messageRepository.deleteAll();
    this.movieRepository.deleteAll(); // here he throws an exception
    this.movieInfoRepository.deleteAll();
    this.userRepository.deleteAll();
}

上面代码中标记的行被扔掉了

org.springframework.orm.ObjectRetrievalFailureException: Object [id=1] was not of the specified subclass [com.jonki.popcorn.core.jpa.entity.movie.MovieBoxOfficeEntity] : loaded object was of wrong class class com.jonki.popcorn.core.jpa.entity.movie.MovieOtherTitleEntity; nested exception is org.hibernate.WrongClassException: Object [id=1] was not of the specified subclass [com.jonki.popcorn.core.jpa.entity.movie.MovieBoxOfficeEntity] : loaded object was of wrong class class com.jonki.popcorn.core.jpa.entity.movie.MovieOtherTitleEntity

我将提到它会测试该方法,在其中我将Object MovieOtherTitle项目添加到MovieEntity对象的列表中。

2 个答案:

答案 0 :(得分:0)

似乎不同表之间的id具有相同的值,因此,当hibernate尝试加载具有特定id的实体,并且如果内存中已经存在另一个具有相同id的实体时,hibernate就会抱怨此问题。

答案 1 :(得分:0)

确保在数据库中,您没有在discriminator列中没有定义值的条目(可能是手动输入),或者该列中的值不是您任何实体的DiscriminatorValue。这只会影响检索,但不会保存。