我发现使用这样一个非常常见的查询:
@Query(nativeQuery=true, value="select * from questions where id in (22,45,65,777,444)")
会生成一个对象列表,而不是一个问题对象列表。
[[Ljava.lang.Object;@49fd8d8f, [Ljava.lang.Object;@2558cd3c, [Ljava.lang.Object;@690a314b]
这种情况将如何解决?
我现在该怎么办?
谢谢!
编辑:
@RooJpaRepository(domainType = Challenge.class)
public interface ChallengeRepository extends ChallengeRepositoryCustom
{
@Query(nativeQuery=true, value="select * from questions where id in (22,45,65,777,444)")
List<Questions> chooseRandomOldQuestions();
}
答案 0 :(得分:1)
我强烈认为这与in
子句无关,而是与您使用的类型无关。
您的存储库已输入Challenge
域类。 Question
(我想你的意思是,而不是Questions
)可能不是Challenge
的子类型对吗?如果是这种情况,我们不会将域类型移交给EntityManager
以适应人们执行Long
等投影的情况,如果我们将非托管类型移交给Question(s)
,则查询执行将失败查询执行。
解决方法是创建一个专用的存储库来管理{{1}}个实例(仍然不确定这是一个拼写错误或一个单独的类)应该做的伎俩。