当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA本机查询结果实体

濮阳祯
2023-03-14

此外,该实体需要一个id,我希望让jpa自动生成它,但我得到的是“Invalid Parameter:Unknown column name id.errorcode=-4460,sqlstate=null”

我的结果集包含4个相同的记录,而不是4个不同的记录,我认为这与我的id字段设置不正确有关

如果你能在这方面提供帮助,我将不胜感激,谢谢。

@Query("SELECT e.transDate, e.category FROM Errors e")            
List<QueuedErrors> findQueuedErrors();
             
private String transDate;
private String category;

public QueuedErrors(String transDate, String category) {
    this.transDate = transDate;
    this.category = category;
}

public String getTransDate() {
    return transDate;
}
public void setTransDate(String transDate) {
    this.transDate = transDate;
}
public String getCategory() {
    return category;
}
public void setCategory(String category) {
    this.category = category;
}

共有1个答案

连乐
2023-03-14

当您创建包含来自多个表的结果的navite查询时(在连接之后),您不必创建新的实体。

解决这个问题的更好的方法是用接口或类DTO进行投影。例如,如果要组合来自Person和Address实体的结果,只需创建Interface:

public interface PersonView {
    String getFirstName();
    String getLastName();
    String getStreet();
}

您可以看到Person(firstName,lastName)和Address(street)的组合文件。您必须将其用作查询响应,如下所示:

@Query(...)
List<PersonView> getPersonWithStreet(String state);
 类似资料:
  • 我需要通过在Hibernate中执行本机查询获得结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体。 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个有值的结果。(Hibernate JPA) 结果是:爱丽丝 当我试图从相同的代码中获得多个select out(查询为select name)时,指定来自fresher_test(其中id=1) 这有一种方法,我可

  • 我有一个复杂的本机查询,我正在尝试将其结果映射到非实体DTO类。我正在尝试使用的with 我的DTO类 我的entity类,它具有我将调用此本机查询结果的存储库接口。 存储库 当我从ItemRepository调用getItemDetails()时,出现以下错误: org.springframework.data.mapping.属性引用异常:没有属性项找到项目类型的详细信息 使用和并解决此问题的

  • 存储库接口: 当我运行调用本机查询的endpoint时,我得到异常: 无法将值“{0,198}”从类型[java.lang.Object[]]转换为类型[com.representation.representation];嵌套异常为org.springframework.core.convert.converterNotFoundException:未找到能够从类型[java.math.BigD

  • 问题内容: 我有一个带有本地查询的Spring Data Repository方法 并且我想将结果映射到Non-Entity POJO 。 是否可以,如果可以,请提供示例吗? 问题答案: 假设在Orid的答案中使用GroupDetails,您是否尝试过JPA 2.1 @ConstructorResult? 并在存储库界面中使用以下命令: 根据springJPA的数据文件,spring将首先尝试找到

  • 并且我希望将结果映射到非实体POJO。 是否可能?如果可能,请提供一个例子?

  • 要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -