我在一对多关系中有以下表格
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中是否真的可行答案 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")