2011-03-02 90 views
0

我有一个简单的对象层次结构,从QuizResponse对象开始。我可以在JPA/Hibernate/Spring中执行此操作吗?

的前两个很重要:

UserPersonalityQuizResponse 
    extends PersonalityQuizResponse extends QuizResponse 
UserScoredQuizResponse 
    extends ScoredQuizResponse extends QuizResponse 
... 
AnonymousPersonalityQuizResponse 
    extends PersonalityQuizResponse extends QuizResponse 
AnonymousScoredQuizResponse 
    extends ScoredQuizResponse extends QuizResponse 

这两个,UserPersonalityQuizResponseUserScoredQuizResponse,有一个“用户”属性映射为每个不同的列。

是否有可能在JPA/Hibernate中创建一些东西,例如接口UserResponse,以允许我实现它,然后执行此操作?

List<UserResponse> quizResponses = user.getUserQuizResponses() 

现在我需要做两个查询得到这个(上检索userPersonalityQuizResponses,一个用于UserScoredQuizResponses)。

不幸的是,QuizResponse类的层次结构不允许UserPersonalityQuizResponseUserScoredQuizResponse扩展相同的父类。

回答

0

你可以做一个HQL查询一样from QuizResponse q where q.class = UserScoredQuizResponse or q.class = UserPersonalityQuizResponse

这里看到多态查询详情:http://docs.jboss.org/hibernate/core/3.5/reference/en/html_single/#queryhql-polymorphism

+0

恐怕这不工作,因为我需要查询这个班对“用户”属性。 ... org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.QueryException:无法解析属性:user:com.qfeast.persitence.dao.quiz.QuizResponse – 2011-03-03 08:10:21

相关问题