查找java有误,java – JPA查询的奇怪错误

嗨,我正在尝试查询JPA上的一些数据,这是我的查询:

@Override

public List findByPeriodo(Person person, int dia, int mes, int anno) {

Query busqueda = em.createNativeQuery("Select * from HorariosAtencion where " +

"idPerson = ?1 AND "+

"DAY( fechaInicio) <= ?2 AND MONTH( fechaInicio ) <= ?3 AND YEAR( fechaInicio) <= ?4 AND "+

"DAY( fechaFin) >= ?2 AND MONTH( fechaFin ) >= ?3 AND YEAR( fechaFin ) >= ?4 ORDER BY TIME(fechaInicio)", HorarioAtencion.class);

busqueda.setParameter(1,person.getId());

busqueda.setParameter(2, dia);

busqueda.setParameter(3, mes);

busqueda.setParameter(4, anno);

return busqueda.getResultList();

}

此查询返回结果,但会触发下一个异常:

Caused by: Exception [EclipseLink-6044] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.QueryException

Exception Description: The primary key read from the row [ArrayRecord(

=> 1

=> 13

=> 2013-01-04 12:25:00.0

=> 2013-01-04 12:25:00.0

=> true

=> true

=> true

=> true

=> true

=> true

=> true)] during the execution of the query was detected to be null. Primary keys must not contain null.

Query: ReadAllQuery(referenceClass=HorarioAtencion sql="Select * from HorariosAtencion where idPerson = ? AND DAY( fechaInicio) <= ? AND MONTH( fechaInicio ) <= ? AND YEAR( fechaInicio) <= ? AND DAY( fechaFin) >= ? AND MONTH( fechaFin ) >= ? AND YEAR( fechaFin ) >= ? ORDER BY TIME(fechaInicio)")

我不知道可能是什么问题:/

更新:

实体类的列定义:

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Basic(optional = false)

@Column(name = "id")

private Integer id;

@Basic(optional = false)

@Column(name = "fechaInicio")

@Temporal(TemporalType.TIMESTAMP)

private Date fechaInicio;

@Basic(optional = false)

@Column(name = "fechaFin")

@Temporal(TemporalType.TIMESTAMP)

private Date fechaFin;

@Basic(optional = false)

@Column(name = "domingo")

private boolean domingo;

@Basic(optional = false)

@Column(name = "lunes")

private boolean lunes;

@Basic(optional = false)

@Column(name = "martes")

private boolean martes;

@Basic(optional = false)

@Column(name = "miercoles")

private boolean miercoles;

@Basic(optional = false)

@Column(name = "jueves")

private boolean jueves;

@Basic(optional = false)

@Column(name = "viernes")

private boolean viernes;

@Basic(optional = false)

@Column(name = "sabado")

private boolean sabado;

@JoinColumn(name = "idPersona", referencedColumnName = "id")

@ManyToOne(optional = false)

private Persona idPersona;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值