JPA查询获取一对多关系中的对象列表

时间:2016-11-24 08:50:11

标签: java hibernate jpa jpql

我在一对多关系中有以下表格

Class A {

    private Integer id;

    private String name;

    @OneToMany(mappedBy="a", fetch=FetchType.LAZY)
    private List<B> bs;

    public A(Integer id, String name, List<B> bs){
    this.id = id;
    this.name = name;
    this.bs = bs;
    }
}

Class B {

    @ManyToOne
    private A a;

    private String name;
}

我想编写查询来获取A类数据及其bs 例如 Select NEW A(a.id, a.name, a.bs) FROM A a WHERE a.id = 10;

我的构造函数是参数(Integer id,String name,List bs)。但它抛出错误无法找到合适的构造函数。

你能告诉我我在做什么错吗?这在JPA中是否真的可行

3 个答案:

答案 0 :(得分:0)

在查询中提供类new A的完整包名称。

答案 1 :(得分:0)

我认为您错过了JPA的@JoinColumn注释。试试这个:

Class A {

    private Integer id;
    private String name;
    @OneToMany(mappedBy="a", fetch=FetchType.LAZY)
    private List<B> bs;
}

Class B {

    @ManyToOne
    @JoinColumn(name="aId") // Link 'aId' foreign key <--
    private A a;
    private String name;
}

答案 2 :(得分:0)

首先,您需要将默认构造函数添加到实体

查询更像是

"Select NEW A(a.id, a.name, a.bs) FROM " + A.class.getSimpleName() + " a WHERE a.id = 10";

同样,msagala说你需要@JoinColumn(name = "id")