Prithu Singh Kathet
Prithu Singh Kathet

Reputation: 1

Could not extract Result set, org.hibernate.exception.SQLGrammarException

Not the question asked here : Could not extract result in hibernate?

My POJO look like this:

@Entity
@Table(name = "vw_dupicate_ticket_count_qbr_reltag")
public class DuplicateManagerMetricsRelTagEntity {​​​​​​
    @Id
    @Column(name = "sn")
    private Integer sn;

    @Column(name = "releasetag")
    private String releasetag;

    @Column(name = "reporting_month")
    private String reporting_month;

    @Column(name = "clientid")
    private String clientid;

    @Column(name = "appid")
    private String appid;

    @Column(name = "ticket_count")
    private Integer ticket_count;


    public DuplicateManagerMetricsRelTagEntity() {​​​​​​

    }​​​​​​

    public DuplicateManagerMetricsRelTagEntity(Integer sn, String releasetag, String reporting_month, String clientid, String appid, Integer ticket_count) {​​​​​​
        this.sn = sn;
        this.releasetag = releasetag;
        this.reporting_month = reporting_month;
        this.clientid = clientid;
        this.appid = appid;
        this.ticket_count = ticket_count;
    }​​​​​​

    public Integer getSn() {​​​​​​
        return sn;
    }​​​​​​

    public void setSn(Integer sn) {​​​​​​
        this.sn = sn;
    }​​​​​​

    public String getReleasetag() {​​​​​​
        return releasetag;
    }​​​​​​

    public void setReleasetag(String releasetag) {​​​​​​
        this.releasetag = releasetag;
    }​​​​​​

    public String getReporting_month() {​​​​​​
        return reporting_month;
    }​​​​​​

    public void setReporting_month(String reporting_month) {​​​​​​
        this.reporting_month = reporting_month;
    }​​​​​​

    public String getClientid() {​​​​​​
        return clientid;
    }​​​​​​

    public void setClientid(String clientid) {​​​​​​
        this.clientid = clientid;
    }​​​​​​

    public String getAppid() {​​​​​​
        return appid;
    }​​​​​​

    public void setAppid(String appid) {​​​​​​
        this.appid = appid;
    }​​​​​​

    public Integer getTicket_count() {​​​​​​
        return ticket_count;
    }​​​​​​

    public void setTicket_count(Integer ticket_count) {​​​​​​
        this.ticket_count = ticket_count;
    }​​​​​​
}​​​​​​

My controller:

@RequestMapping("/qbr/duplicatemanager/{clientid}/{appid}/{releasetag}/")
@CrossOrigin
public List<DuplicateManagerMetricsRelTagEntity> getAllDuplicateManagerFromReleaseTag(@PathVariable String clientid, @PathVariable String[] appid, @PathVariable String releasetag) {
    logger.info("Returing all duplicate managers of client {} appId {} from release tag {} ", clientid, appid, releasetag);

    System.out.println("data in controller : " + clientid + " " + appid + " " + releasetag);
    return duplicateManagerMetricsService.getAllDuplicateManagerFromReleaseTag(clientid, appid, releasetag);

} 

My service:

public List<DuplicateManagerMetricsRelTagEntity> getAllDuplicateManagerFromReleaseTag(String clientid, String[] appid, String releasetag) {
    try {
        System.out.println("data in service : "+ clientid + " " + appid + " " + releasetag);
        return duplicateManagerMetricsRepository.getAllDuplicateManagerfromReleaseTag(clientid, appid, releasetag);
    } catch (Exception e) {
        logger.error(e);
        return new ArrayList<>();
    }
}

My repository:

@Query(value = "select NEW qbr.entity.DuplicateManagerMetricsRelTagEntity( a.sn, a.clientid, a.ticket_count) from  vw_dupicate_ticket_count_qbr_reltag a where a.clientid = ?1 AND a.appid in (?2)  AND a.releasetag=?3", nativeQuery = true)
List<DuplicateManagerMetricsRelTagEntity> getAllDuplicateManagerfromReleaseTag(String clientid, String[] appid, String releasetag);

Error I am getting:

 [INFO ] 2022-09-05 02:24:58.158 [http-nio-8080-exec-7] DuplicateManagerMetricsController - Returing all duplicate managers of client 657 appId [657-001] from release tag WIL657.2021.05-001 
    

data in controller : 657 [Ljava.lang.String;@42daeab8 WIL657.2021.05-001

data in service : 657 [Ljava.lang.String;@42daeab8 WIL657.2021.05-001

2022-09-05 02:24:58 DEBUG org.hibernate.SQL - select NEW qbr.entity.DuplicateManagerMetricsRelTagEntity( a.sn, a.clientid, a.ticket_count) from  vw_duplicate_ticket_count_qbr_reltag a where a.clientid = ? AND a.appid in (?)  AND a.releasetag=?

2022-09-05 02:24:58 WARN  o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 923, SQLState: 42000

2022-09-05 02:24:58 ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ORA-00923: FROM keyword not found where expected [ERROR] 2022-09-05 02:24:58.175 [http-nio-8080-exec-7] DuplicateManagerMetricsService - org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Upvotes: 0

Views: 1215

Answers (1)

Jens
Jens

Reputation: 69440

You can not use select NEW qbr.entity.DuplicateManagerMetricsRelTagEntity( with nativeQuery=true.

You can use nativeQuery and map the result by hand or you have to use a JPQL query where you have to remove nativeQuery=true.

Upvotes: 1

Related Questions