2

我这样写命名查询

<query name="GET_QUESTIONS_BY_TEST_ID">select tq from TestQuestion as tq inner join tq.question as
        q
        where
        tq.testQuestionIdentifer.versionId=(select
        max(tq.testQuestionIdentifer.versionId) from TestQuestion tq_inner
        where
        tq_inner.testQuestionIdentifer.testId=:testId) and
        tq.testQuestionIdentifer.testId=:testId
    </query>

当我得到结果时,我遇到了问题。当我写作时,from TestQuestion我得到List<Object[Object[]]>了 Question 和 TestQuestion 对象。当我写作时, select tq我得到LazyInitializationException. 我想得到 List 但不能。

更新

我决定将其他部分添加到我的 hbm

<class name="by.bsuir.testapp.model.TestQuestion" table="TEST_QUESTION"
        lazy="true">
        <composite-id name="testQuestionIdentifer"
            class="by.bsuir.testapp.model.TestQuestionIdentifer">
            <key-property name="testId" column="TEST_ID" />
            <key-property name="versionId" column="VERSION_ID" />
            <key-property name="questionId" column="QUESTION_ID" />
        </composite-id>
        <many-to-one name="question" class="by.bsuir.testapp.model.Question"
            fetch="join" insert="false" update="false">
            <column name="QUESTION_ID" />
        </many-to-one>
    </class>

我发现它存在11.4.1.2. Queries that return tuples于 Hibernate文档的文档中

我应该如何为 rignt 结果编写命名查询?

4

1 回答 1

0

我不明白你的问题。

您的查询 (select tq from TestQuestion as tq...from TestQuestion) 都应该返回List<TestQuestion>而不是List<Object[][]>

LazyInitializationException通常在发生延迟获取时发生,但实体的相关会话已经关闭(如果我错了,请纠正我,只是从我的裸记忆中我认为是这样LazyInitializationException)。它与命名查询无关。请确保您的交易控制等设置正确。

于 2012-11-14T02:27:32.897 回答