Java 如何使用@ConstructorResult注释

Java 如何使用@ConstructorResult注释,java,jpa,nativequery,Java,Jpa,Nativequery,我有一些本机查询,希望将查询执行的结果映射到非实体POJO类列表中: @SqlResultSetMapping( name = "SomeMapping", classes = { @ConstructorResult(targetClass = SomeClass.class, columns = { @ColumnResult(name = "id", type = Integer.class),

我有一些本机查询,希望将查询执行的结果映射到非实体POJO类列表中:

@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();
String query=“选择”+
“A.id作为'id',”+
“A.name作为‘name’,”+
“A.begDate作为‘开始日期’”+
“来自”+
“表A”+
“其中A.endDate<‘2014-01-01’”;
List result=em.createNativeQuery(查询,“SomeMapping”).getResultList();

但我总是得到物品清单。如何检索我的POJO-s列表?

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

这并不能回答问题。要评论或要求作者澄清,请在他们的帖子下方留下评论。我没有尝试过,但我相信这是答案。事实上,我将其表述为“尝试”,与它的正确性无关。PS:您可以肯定,如果我从OP得到任何反应,我会相应地更改文本。如果我将“@SqlResultSetMapping”注释移动到另一个实体类(带有“@Entity”注释),我将收到空列表。但在HeidySQL中执行相同的查询会返回多行,这是对问题的一个很好的解释