NamedNativeQuery 不返回正确的结果集

时间:2021-06-15 17:45:05

标签: java jpa

我有一个问题:在我的 Java 应用程序中,当我调用我的 NamedNativeQuery 时:

@NamedNativeQuery(
        name        = "a.findOperor",
        resultClass = OperorEntity.class,
        query       =
           " select\n" +
                   " b.cod, " +
                   " op.ex," +
                   " b.c id, \n" +
                   "    SUM (b.vx) VX,\n" +
                   "    SUM (b.vi) VI,\n" +
                   "    SUM (b.an) AN,\n" +
                   "    SUM (b.ai) AI,\n" +
                   "    SUM (b.pn) PN,\n" +
                   "    SUM (b.pi) PI,\n" +
                   "    SUM (b.rn) RN,\n" +
                   "    SUM (b.ri) RI,\n" +
                   "    SUM (b.prn) PRN,\n" +
                   "    SUM (b.pri) PRI,\n" +
                   "    SUM (b.bn) BN,\n" +
                   "    SUM (b.bpg) BPG,\n" +
                   "    SUM (b.bri) BRI,\n" +
                   " FROM X b \n" 

我收到以下值:

x, y, z, 3000,10,2500,10,ecc...
x, y, z, 3000,10,2500,10,ecc...
x, y, z, 3000,10,2500,10,ecc...
x, y, z, 3000,10,2500,10,ecc...

但在数据库中的值是:

x, y, z, 3000,10,2500,10,ecc...
x, y, z, 0,0,0,0,ecc...
x, y, z, 0,0,0,0,ecc...
x, y, z, 0,0,0,0,ecc...

如何解决这个问题?

我的实体是:

@Getter
@Setter

@Data
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
@Table(schema = "DB", name = "OPEROR")

public class OperorEntity{
    private static final long serialVersionUID = 7262340904116672804L;

    @Id
    @Column(name = "cod")
    private Integer cod;

    @Column(name = "id")
    private Integer id;
    
    @Column(name = "vn")
    private Integer    VN;
    
    @Column(name = "vi")
    private Integer    VI;

    @Column(name = "an")
    private Integer    AN;

    @Column(name = "ai")
    private Integer    AI;

    @Column(name = "pn")
    private Integer    PN;

    @Column(name = "pi")
    private Integer    PI;

    @Column(name = "rn")
    private Integer    RN;

    @Column(name = "ri")
    private Integer    RI;

    @Column(name = "prn")
    private Integer    PRN;

    @Column(name = "pri")
    private Integer    PRI;

    @Column(name = "bn")
    private Integer    BN;

    @Column(name = "bpg")
    private Integer    BPG;

    @Column(name = "bri")
    private Integer    BRI;
}

非常感谢。

1 个答案:

答案 0 :(得分:1)

我解决了我的问题,解决方案是复制 JPA Id,因为来自 DB 的行有一个由“cod”和“Id”组成的双主键。

谢谢大家。

相关问题