0
我正在一个项目中两个实体有单向@OneToMany映射。 当我试图加载特定父ID的所有子实体与此查询 -子实体计数在单向@OneToMany映射休眠
select p.childEntities from Parent p where p.id =:parentId
它工作正常。另外请注意,在这里我使用hibernate api进行分页,因此我只得到10,25 ...个记录。 在很多方面,我只需要计数实体。 现在,我想这个饱受质疑
select count(p.childEntities) from Parent p where p.id =:parentId
其失败,ORACLE错误代码加载所有子实体仅数 - ORA-00936:缺少表达
我的情况(这个项目低权限) - 我无法将实体映射更改为双向。并没有使用原生SQL。 此外,我认为,让使用所有列表 -
" select p.childEntities from Parent p where p.id =:parentId "
然后刚开大小()进行计数性能昂贵。
映射的项目 - 父一瞥讲座
@Entity
@Table(name = "PARENT")
public class Parent implements Serializable{
private static final long serialVersionUID = 2232715856164345328L;
private Long id;
private String first;
private String second;
private String third;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "parent_id")
private List<Child> childEntities;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getSecond() {
return second;
}
public void setSecond(String second) {
this.second = second;
}
public String getThird() {
return third;
}
public void setThird(String third) {
this.third = third;
}
public List<Child> getChildEntities() {
return childEntities;
}
public void setChildEntities(List<Child> childEntities) {
this.childEntities = childEntities;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
与子女讲座
@Entity
@Table(name = "Child")
public class Child {
private Long id;
private Integer number;
private String prop1;
private String prop2;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public String getProp1() {
return prop1;
}
public void setProp1(String prop1) {
this.prop1 = prop1;
}
public String getProp2() {
return prop2;
}
public void setProp2(String prop2) {
this.prop2 = prop2;
}
}
什么我留下所有的选择?
这个答案不仅解决了我的问题也是它清除我的doubt-“当/为什么我需要加入Hibernate?“。 –