Java 执行存储过程,部分数据出错

    技术2024-01-19  104

    今天在做一个功能,运用到存储过程去查询数据,在一次测试中,发现数据存在差错,不一致。 如图: idea执行的结果反馈: 而在数据库中执行的结果却是: 可以发现,同一个存储过程,获取到的结果数据出了问题。花费几个小时后,发现是在映射到实体内中,因为实体内的主键值设置为sub_code.而我这边的记录中,这个值并不是唯一的。Java 在执行调用的时候,会根据这个主键来进行底层执行,将数据给替换了。 实体类代码如下:

    @Data @Entity @NamedStoredProcedureQueries({ @NamedStoredProcedureQuery( name = "sp_get_sys_list_items_update", procedureName = "sp_get_sys_list_items_update", resultClasses = {SpSysListItemEntity.class}, parameters = { @StoredProcedureParameter(mode = ParameterMode.IN, name = "p_tenant_id", type = String.class), @StoredProcedureParameter(mode = ParameterMode.IN, name = "p_locale", type = String.class), @StoredProcedureParameter(mode = ParameterMode.IN, name = "p_language", type = String.class), @StoredProcedureParameter(mode = ParameterMode.IN, name = "p_para_code", type = String.class) } ) }) public class SpSysListItemEntity { @Column(name = "code") private String code; @Id @Column(name = "sub_code") private String subCode; @Column(name = "item_desc") private String itemDesc; @Column(name = "order_by") private String orderBy; }

    修改使用代码

    Query query = entityManager.createNativeQuery("call sp_get_sys_list_items_update()");
    Processed: 0.011, SQL: 10