错误:在 HQL 查询中创建对象时无法解析为实例化命名的类...

问题描述 投票:0回答:1

我想了解如何在 Hibernate 中创建 DTO 对象。我已在 GitHub 上上传了示例的最小代码。

我有代码,我相信应该根据 HQL 选择查询的选择接收一个列表,但是在执行它时,我收到错误“org.hibernate.query.SemanticException:无法解析类”ru.maelnor .entity.Linked'为实例化而命名'。

List<Linked> linkedPurchases = session.createQuery(
    "select new ru.maelnor.entity.Linked(c.id, s.id) " +
    "from Purchase pl " +
    "join Good c on pl.goodName = c.name " +
    "join User s on pl.userName = s.name", Linked.class)
        .getResultList();

我正在学习 Hibernate,并且对我的方法的正确性并不完全有信心,这是基于我在其他 ORM 方面的经验。也许我做错了什么?

java hibernate jpa
1个回答
0
投票

我找到了一个基于使用Map的解决方案并将其添加到存储库;它可能对某人有用。但我仍然想弄清楚是否可以直接在查询中检索完整的对象。

List<Linked> linkedPurchases = session.createQuery(
"select new map(c.id, s.id) " +
"from Purchase pl " +
"join Good c on pl.goodName = c.name " +
"join User s on pl.userName = s.name", Map.class)
    .getResultStream()
    .map(map -> new Linked((Good) map.get("course"), (User) map.get("student")))
    .toList();
© www.soinside.com 2019 - 2024. All rights reserved.