gpt4 book ai didi

java - 洛夫克拉夫特 : hibernate HQL IS EMPTY does not work and renders absurdly complex SQL

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:03 26 4
gpt4 key购买 nike

你好,

故事是这样的:我有一对多。一个是“RadicadoOficio”,许多是“RespuestaOficio”

我只想选择所有没有反应的雷达。

这些是实体(出于教育目的而缩短):

@Entity
@Table(name="COR_RADICADO_OFICIO")
public class RadicadoOficio {
@OneToMany(mappedBy="radicado")
private List<RespuestaOficio> respuestas;

@Column(name="requiere_respuesta")
private Long requiereRespuesta;
}

@Entity
@Table(name="cor_respuesta_oficio")
public class RespuestaOficio {
@ManyToOne
@JoinColumns({@JoinColumn(name = "num_radicado"), @JoinColumn(name="ano_radicado")})
private RadicadoOficio radicado;
}

这个 DAO 方法:

HibernateUtil.getCurrentSession().createQuery("select obj from " + sample.getCanonicalName() + " obj where  obj." + longProp+ " = ? and obj." + childrenProp + " IS EMPTY" )
.setLong(0, longVal );

if (firstResult != null) {
q.setFirstResult(firstResult);
q.setMaxResults(maxResults);
}

return q.list();

渲染这些东西:

select * from ( select row_.*, rownum rownum_ from ( 选择 radicadoof0_.ANO_RADICADO 作为 ANO1_8_, radicadoof0_.NUM_RADICADO 作为 NUM2_8_, radicadoof0_.anexos 作为 anexos8_, radicadoof0_.antecedentes 作为 antecede4_8_, radicadoof0_.asunto 作为 asunto8_, radicadofodireccionof0 as compleme6_8_, radicadoof0_.estado_radicado as estado7_8_, radicadoof0_.fecha_radicado as fecha8_8_, radicadoof0_.fecha_recibido as fecha9_8_, radicadoof0_.fecha_registro as fecha10_8_, radicadoof0_.fecha_vencimiento as fecha11_8_, radicadoof0_.folios as folios8_, radicadoof0_.INTERNO_FUNCIONARIO as INTERNO19_8_, radicadoof0_.INTERNO_ESTATUS as INTERNO13_8_ , radicadoof0_.item as item8_, radicadoof0_.num_planilla as num14_8_, radicadoof0_.num_respuesta as num15_8_, radicadoof0_.INTERNO_PETICIONARIO as INTERNO21_8_, radicadoof0_.requiere_respuesta as requiere16_8_, radicadoof0_.respuesta_multiple as respuesta17_8_, radicadoof0_.tipo_aplicativo as tipo18_8_ from COR_RADICADO_OFICIO radicadoof0_ where radicado of0_.requiere_respuesta=?而不是(存在(从 cor_respuesta_oficio respuestas1_ 选择 respuestas1_.INTERNO_RESPUESTA,其中 radicadoof0_.ANO_RADICADO=respuestas1_.num_radicado 和 radicadoof0_.NUM_RADICADO=respuestas1_.ano_radicado)) ) row_ ) 其中 rownum_ <=?和 rownum_ > ?

Oracle 抛出一个我不理解的“无效数字”错误。

欢迎任何帮助,谢谢

最佳答案

您的 hql 可以连同您的参数一起更改为以下内容。此处的更改是使用您的 hql 中的所有元素。

createQuery("select r FROM RadicadoOficio r where 0 = all elements(r.respuestas)");

所以在您的查询中,它看起来像下面的内容

HibernateUtil.getCurrentSession().createQuery("select obj from " + sample.getCanonicalName() + " obj where  obj." + longProp+ " = ? and 0=all elements(obj." + childrenProp + ")" )
.setLong(0, longVal );

关于java - 洛夫克拉夫特 : hibernate HQL IS EMPTY does not work and renders absurdly complex SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14242575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com