【问题标题】:Can I do this in JPA/Hibernate/Spring?我可以在 JPA/Hibernate/Spring 中执行此操作吗?
【发布时间】:2011-03-02 10:47:45
【问题描述】:

我有一个简单的对象层次结构,从 QuizResponse 对象开始。

其中前两个很重要:

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 扩展同一个父类。

【问题讨论】:

    标签: mysql hibernate spring design-patterns jpa


    【解决方案1】:

    你可以像from QuizResponse q where q.class = UserScoredQuizResponse or q.class = UserPersonalityQuizResponse这样的HQL查询

    在此处查看有关多态查询的更多详细信息:http://docs.jboss.org/hibernate/core/3.5/reference/en/html_single/#queryhql-polymorphism

    【讨论】:

    • 恐怕这行不通,因为我需要针对“用户”属性查询这些类.... org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: could not resolve属性:用户:com.qfeast.persitence.dao.quiz.QuizResponse
    猜你喜欢
    • 2018-07-24
    • 2010-10-29
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多