Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA连接问题,无法从';许多';实体类_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA连接问题,无法从';许多';实体类

Java JPA连接问题,无法从';许多';实体类,java,hibernate,jpa,Java,Hibernate,Jpa,我试图通过使用@ManytoOne注释(据我所知是正确的方法)或在查询生成器中连接(抛出错误)来连接两个实体类 这里是第一个实体类(“多”): 下面是repository类中的查询: CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<PlanTacticDetail> q = builder.createQuery(PlanTacticDetail.class); Root<PlanTactic

我试图通过使用@ManytoOne注释(据我所知是正确的方法)或在查询生成器中连接(抛出错误)来连接两个实体类

这里是第一个实体类(“多”):

下面是repository类中的查询:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<PlanTacticDetail> q =   builder.createQuery(PlanTacticDetail.class);
Root<PlanTacticDetail> c = q.from(PlanTacticDetail.class);
//Root<PlanTactic> p = q.from(PlanTactic.class);
//q.multiselect(c,p.get("usingTargetList"));
q.where(c.get("month").in(months));
return em.createQuery(q).getResultList();
CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery q=builder.createQuery(PlanTacticDetail.class);
根c=q.from(足底类);
//根p=来自(足底类)的q;
//q、 multiselect(c,p.get(“使用目标列表”);
q、 其中(c.get(“月”)在(月)内);
返回em.createQuery(q).getResultList();
如果我取消注释上面的行,我将得到一个错误,这只起作用,它在JSON中只显示第二个类(“一”),没有来自“多”类的成员


谢谢。

在JPA中,默认情况下,许多同一关联都会被急切地加载。但是,我假设您使用的提供程序是Hibernate。不知何故,Hibernate总是使用延迟获取加载任何对象

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<PlanTacticDetail> q = builder.createQuery(PlanTacticDetail.class);
Root<PlanTacticDetail> ptd = q.from(PlanTacticDetail.class);
ptd.fetch("planTactic");
CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery q=builder.createQuery(PlanTacticDetail.class);
根ptd=q.from(足底类);
ptd.fetch(“planTactic”);

错误消息是什么?
builder.createQuery(PlanTacticDetail.class).from(PlanTactic.class)
这行吗!?您想返回什么?PlanTacticDetails类的列表,但如果您使用
PlanTacticDetails ptd
返回结果列表,则需要生成@ManyToOne注释的成员PlanTactic。你可以通过
ptd.getPlanTactic()
来获取PlanTactic成员?但是我在那个类中有一个名为PlanTactic的成员,它没有在JSON输出中填充,因为现在我添加了一个@Transient成员,并在构造函数中使用它,似乎可以工作。
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<PlanTacticDetail> q =   builder.createQuery(PlanTacticDetail.class);
Root<PlanTacticDetail> c = q.from(PlanTacticDetail.class);
//Root<PlanTactic> p = q.from(PlanTactic.class);
//q.multiselect(c,p.get("usingTargetList"));
q.where(c.get("month").in(months));
return em.createQuery(q).getResultList();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<PlanTacticDetail> q = builder.createQuery(PlanTacticDetail.class);
Root<PlanTacticDetail> ptd = q.from(PlanTacticDetail.class);
ptd.fetch("planTactic");