SQL-запрос в JavaSpring, возвращающий нуль - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь сделать простой вызов SQL через Java Spring.В базе данных есть данные, но при вызове возвращается список нулевых значений.

Что интересно, когда я выбираю конкретную строку, она возвращает правильное значение.(См. Ниже)

BasicAccountAuditRepo.java

@Repository
public interface BasicAccountAuditRepository extends CrudRepository<BasicAccountAudit, BasicAccountAuditPK> {

    List<BasicAccountAudit> findAll();

//THIS RETURNS NULL
    @Query("SELECT b FROM BasicAccountAudit as b WHERE id.accountRef  = :accountRef ")  
    List<BasicAccountAudit> findByAccountRef(@Param("accountRef") String accountRef);

//This returns the correct values for dcConnName
    @Query("SELECT id.dcConnName FROM BasicAccountAudit WHERE id.accountRef  = :accountRef ")  
    List<BasicAccountAudit> findByAccountRef(@Param("accountRef") String accountRef);

}

Я использую встроенный идентификатор для класса модели.BasicAccountAudit.java


@XmlRootElement
@Entity
@Table(name = "tb_Account_History", schema="dbo")

public class BasicAccountAudit implements Serializable{

    @EmbeddedId
    private BasicAccountAuditPK id;


    @Temporal(TemporalType.TIMESTAMP)
    @Column(insertable = true, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date enteredDate;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(insertable = true, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date lastUpdatedDate;


}

Вот класс первичного ключа: BasicAccountAuditPK.java

package org.fusion.restful.basicaccount.model;

import java.io.Serializable;

public class BasicAccountAuditPK implements Serializable {

    private String accountRef;
    private String client;
    private String dcEligible;
    private String shortCode;
    private String loadCps;
    private String stpFlag;
    private String accountType;
    private String clearingFirm;
    private String exchange;
    private String dcConnName;
    private String status; 
    private String enteredBy;

 //getters and setters...
}

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны соответствовать псевдониму.В первом запросе вы забыли псевдоним в предложении where:

"SELECT b FROM BasicAccountAudit as b WHERE id.accountRef  = :accountRef "

должно быть

SELECT b FROM BasicAccountAudit as b WHERE b.id.accountRef  = :accountRef "

Во втором запросе вы не объявляете псевдоним, поэтому по умолчанию онищет идентификатор под вашим объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...