eclipselink JPA只获取包含列表对象的特定列

时间:2016-02-05 03:43:47

标签: java jpa eclipselink

我有一个非常复杂的值对象,有很多子对象,一对一,一对多关系如下

@Entity(name = "objectA")
@Table(name = "A_table")
@Converter(name = "ynBooleanConverter", converterClass = BooleanYNConverter.class)
@NamedQuery(name="findPartOfA",query="select a.id.value,a.str,a.objBList from objectA a where a.id.value = :id")
public class A extends SuperEntity {
    @EmbeddedId
    private ID id;

    @OneToOne ......
    private anotherObject1 objt1;

    @OneToOne ......
    private anotherObject2 objt2;

    @OneToOne ......
    private anotherObject3 objt3;

    @Column(name = "STR")
    private str;

    @OneToMany(mappedBy = "objectA", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE})
    private List<ObjectB> objBList;

    //Lots of other objects.......

     .....
}

对象B是一个更简单的实体

@Entity(name = "objectB")
@Table(name = "B_table")
@Converter(name = "ynBooleanConverter", converterClass = BooleanYNConverter.class)
public class B extends SuperEntity {
    @EmbeddedId
    private ID id;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "r_roid", referencedColumnName = "r_roid")
private A aObj;

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

@Column(name = "strValue")
private Boolean isOk

.....

}

我需要检索结果,使结果集A只有id,str和对象B列表。为此,我创建了一个@NamedQuery(name="findPartOfA",query="select a.id.value,a.str,a.objBList from objectA a where a.id.value = :id")并尝试执行如下

Query query = em.createNamedQuery("findPartOfA");
query.setParameter("id", id);
@SuppressWarnings("unchecked")
// List<A> results = query.getResultList(); // Giving Same error
List<Object[]> results = query.getResultList();
for (Object[] objects : results) {
    System.out.println(objects);
}

我正在获得&#34;状态字段路径&#39; a.objList&#39;无法解析为集合类型。

这个查询有什么问题?我是否需要显式使用与ObjectB的连接?

0 个答案:

没有答案