NamedNativeQuery не возвращает правильный набор результатов

#java #jpa

Вопрос:

У меня проблема: в моем java-приложении, когда я вызываю свой NamedNativeQuery:

 @NamedNativeQuery(
        name        = "a.findOperor",
        resultClass = OperorEntity.class,
        query       =
           " selectn"  
                   " 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. Благодаря вам, ребята, я решил свою проблему. Дело в том, что мои результаты имели двойной идентификатор JPA ( «cod» и «id»), и если я устанавливал только один идентификатор, во время выполнения он удваивал результаты, минуя другой ключ. Спасибо

Ответ №1:

Я решил свою проблему, решение состоит в том, чтобы дублировать идентификатор JPA, потому что строки из БД имеют двойной первичный ключ, образованный «cod» и «Id».

Спасибо всем.