2017-10-03 1 views
4

내 API에 dropwizard 프레임 워크를 사용하고 있습니다.DAO SQL 함수에서 반환 된 필드를 매핑하는 방법은 무엇입니까?

@NamedQuery(name = "com.myapp.entity.MyEntity.findByMatchId", query = "SELECT test.name, count(test) as count FROM MyEntity as test,Entity1 as d where test.drug=d.id and test.drug.id= :drugId group by test.name") }) 

내가 이름 count으로 count(test) 함수의 결과를 반환 오전 : 나는 다음과 같이 명명 된 쿼리가 있습니다. 아래는 내 엔터티 클래스입니다.

@NamedQuery(name = "com.myapp.entity.MyEntity.findByMatchId", query = "SELECT test.name, count(test) as count FROM MyEntity as test,Entity1 as d where test.drug=d.id and test.drug.id= :drugId group by test.name") }) 

@Entity 
@Table(name = "my_entity") 
@NamedQueries({ 
     @NamedQuery(name = "com.myapp.entity.MyEntity.findByMatchId", query = "SELECT test.name, count(test) as count FROM MyEntity as test,Entity1 as d where test.drug=d.id and test.drug.id= :drugId group by test.name") })) 
public class MyEntity { 

     @Id 
     @GeneratedValue(strategy = GenerationType.IDENTITY) 
     private Long id; 

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

     @JsonBackReference("drug_id") 
     @ManyToOne(fetch = FetchType.LAZY) 
     @JoinColumn(name = "drug_id", nullable = false) 
     private Drug drug; 

     @Column(name = "timestamp", nullable = false) 
     private Date timestamp; 

     // This value is not getting mapped 
     private Long count; 

     public Long getId() { 
      return id; 
     } 

     public void setId(Long id) { 
      this.id = id; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public Drug getDrug() { 
      return drug; 
     } 

     public void setDrug(Drug drug) { 
      this.drug = drug; 
     } 

     public Date getTimestamp() { 
      return timestamp; 
     } 

     public void setTimestamp(Date timestamp) { 
      this.timestamp = timestamp; 
     } 

     public SideEffectSeverity getSideEffectSeverity() { 
      return sideEffectSeverity; 
     } 

     public void setSideEffectSeverity(SideEffectSeverity sideEffectSeverity) { 
      this.sideEffectSeverity = sideEffectSeverity; 
     } 

     public Long getCount() { 
      return count; 
     } 

     public void setCount(Long count) { 
      this.count = count; 
     } 

    } 

count 함수의 값을 count로 올바르게 매핑하려면 여기를 어떻게 수행해야합니까?

매핑이 올바르게 발생하지 않는 이유는 무엇입니까? 몇 가지 특수 효과를 주어야합니까?

답변

2

위의 쿼리 결과가 있습니까?

그렇다면 count() 함수의 반환 유형이 길어질 수 있으므로주의하십시오. 따라서 DTO (두 개의 필드를 & 카운트로 포함해야 함)로 응답을 매핑하려고했으면 좋겠다.

0

OracleSQL 또는 POSTgreSQL을 사용하고 있습니까?

카운트 예약어, 당신의 열 이름을 변경하면이

@Column(name = "count1") 
    private Long count; 
같이이 문제를 해결할 것입니다
관련 문제