2014-03-26 83 views
5

我有一些本地查询并希望查询执行的结果映射到非实体POJO类的列表:如何使用@ConstructorResult注释

@SqlResultSetMapping(
    name = "SomeMapping", 
    classes = { 
     @ConstructorResult(targetClass = SomeClass.class, 
      columns = { 
       @ColumnResult(name = "id", type = Integer.class), 
       @ColumnResult(name = "NAME", type = String.class), 
       @ColumnResult(name = "DATE_BEGIN", type = java.util.Date.class) 
      } 
     ) 
    } 
) 

public class SomeClass{ 
    private Integer id; 
    private String name; 
    private java.util.Date begDate; 
    private java.util.Date endDate; 

    public SomeClass(Integer id, String name, Date begDate){ 
     this.id = id; 
     this.name = name; 
     this.begDate = begDate; 
    } 

    //Getters & Setters ... 
} 

一般我如何想检索查询执行的结果:

String query = "SELECT " + 
"A.id AS 'id', " + 
"A.name AS 'NAME', " + 
"A.begDate AS 'DATE_BEGIN' " + 
"FROM " + 
"SomeTable A " + 
"WHERE A.endDate < '2014-01-01'"; 

List<SomeClass> result = em.createNativeQuery(query, "SomeMapping").getResultList(); 

但我总是得到对象列表。如何检索我的POJO-s的列表?

+0

这是问题的一个很好的解释 https://stackoverflow.com/questions/24160817/getting-error-could-not-locate-appropriate-constructor-on-class?answertab=votes#tab-top –

回答

0

尝试移动实体上的@SqlResultSetMapping实体。

+1

这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – serejja

+0

我还没有尝试过,但我相信这是答案。我把它形容为“试”的事实与其正确性无关。 PS:你可以肯定,如果我从OP得到任何反应,我会相应地改变文本。 –

+0

如果我将“@SqlResultSetMapping”注释移动到另一个实体类(带有“@Entity”注释),我会收到空​​列表。但是在HeidySQL中执行相同的查询会返回多行。 – Silence