Java Hibernate HQL返回多个值时在解析时引发NullPointerException
我对HQL查询有问题。我希望在一个查询中返回多个值(基本上是一个包含实体和布尔值的元组,无论该实体是否存在某些内容) 我在SpringDataJPA中使用JPA存储库 我的问题是:Java Hibernate HQL返回多个值时在解析时引发NullPointerException,java,spring,hibernate,jpa,hql,Java,Spring,Hibernate,Jpa,Hql,我对HQL查询有问题。我希望在一个查询中返回多个值(基本上是一个包含实体和布尔值的元组,无论该实体是否存在某些内容) 我在SpringDataJPA中使用JPA存储库 我的问题是: @Query("select os, exists(" + " select z from Zaznam z" + " inner join z.instanciaOkna io with (io.okno = :okno)" + " where
@Query("select os, exists("
+ " select z from Zaznam z"
+ " inner join z.instanciaOkna io with (io.okno = :okno)"
+ " where z.osoba = os)"
+ " from Osoba os where os in (:osoby)")
public List<Object[]> findPritomneOsoby(@Param("osoby") List<Osoba> osoby, @Param("okno") Okno okno);
InstanciaOkna.java:
package sk.uniba.edo.EDOApp.model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "instancia_okna", schema = "rozvrh")
public class InstanciaOkna implements Serializable {
private long id;
private Okno okno;
private Date datumcasOd;
private Date datumcasDo;
private List<Zaznam> zaznamy;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name = "okno", nullable = false)
public Okno getOkno() {
return okno;
}
public void setOkno(Okno okno) {
this.okno = okno;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "datumcas_od")
public Date getDatumcasOd() {
return datumcasOd;
}
public void setDatumcasOd(Date datumcas) {
this.datumcasOd = datumcas;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "datumcas_do")
public Date getDatumcasDo() {
return datumcasDo;
}
public void setDatumcasDo(Date datumcasDo) {
this.datumcasDo = datumcasDo;
}
@OneToMany(mappedBy = "instanciaOkna")
public List<Zaznam> getZaznamy() {
return zaznamy;
}
public void setZaznamy(List<Zaznam> zaznamy) {
this.zaznamy = zaznamy;
}
@Override
public String toString() {
return String.format("[InstanciaOkna: ID=%d, od=%s, do=%s, okno=%s]", id, datumcasOd, datumcasDo, okno);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof InstanciaOkna))
return false;
InstanciaOkna io = (InstanciaOkna) obj;
return (id == io.id);
}
@Override
public int hashCode() {
return new Long(id).hashCode();
}
}
包sk.uniba.edo.EDOApp.model;
导入java.io.Serializable;
导入java.util.Date;
导入java.util.List;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.manytone;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入javax.persistence.Temporal;
导入javax.persistence.TemporalType;
@实体
@表(name=“instancia_okna”,schema=“rozvrh”)
公共类InstanciaOkna实现了可序列化{
私人长id;
私人奥克诺奥克诺;
私人日期datumcasOd;
私人日期datumcasDo;
私人名单扎兹纳米;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@许多酮
@JoinColumn(name=“okno”,nullable=false)
公共Okno getOkno(){
返回okno;
}
公共无效设置序号(Okno Okno){
this.okno=okno;
}
@时态(TemporalType.TIMESTAMP)
@列(name=“datumcas\u od”)
公开日期getDatumcasOd(){
返回datumcasOd;
}
公共无效设置日期(日期){
this.datumcasOd=datumcas;
}
@时态(TemporalType.TIMESTAMP)
@列(name=“datumcas\u do”)
公开日期getDatumcasDo(){
返回datumcasDo;
}
公共无效设置datumcasDo(日期datumcasDo){
this.datumcasDo=datumcasDo;
}
@OneToMany(mappedBy=“instanciaOkna”)
公共列表getZaznamy(){
返回扎兹纳米;
}
公共无效设置zaznamy(列表zaznamy){
this.zaznamy=zaznamy;
}
@凌驾
公共字符串toString(){
返回String.format(“[InstanciaOkna:ID=%d,od=%s,do=%s,okno=%s]”,ID,datumcasOd,datumcasDo,okno);
}
@凌驾
公共布尔等于(对象obj){
如果(!(obj instanceof InstanceAOKNA))
返回false;
InstanciaOkna io=(InstanciaOkna)obj;
返回(id==io.id);
}
@凌驾
公共int hashCode(){
返回新的Long(id).hashCode();
}
}
Okno.java:
package sk.uniba.edo.EDOApp.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
* Okno generated by hbm2java
*/
@Entity
@Table(name = "okno", schema = "rozvrh")
public class Okno implements java.io.Serializable {
private long id;
private TypOkno typOkno;
private PredmetInstancia predmetInstancia;
private Den den;
private Date od;
private Date do_;
private Set<OsobaRola> instanciaRoly = new HashSet<OsobaRola>(0);
private Set<PoziadavkaOkno> poziadavkaOknosForCielOkno = new HashSet<PoziadavkaOkno>(0);
private Set<Volno> volnos = new HashSet<Volno>(0);
private Set<PoziadavkaOkno> poziadavkaOknosForZdrojOkno = new HashSet<PoziadavkaOkno>(0);
private List<InstanciaOkna> instancieOkna = new ArrayList<>();
@Id
@Column(name = "id", unique = true, nullable = false)
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "typ_okno", nullable = false)
public TypOkno getTypOkno() {
return this.typOkno;
}
public void setTypOkno(TypOkno typOkno) {
this.typOkno = typOkno;
}
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "instancia", nullable = false)
public PredmetInstancia getPredmetInstancia() {
return this.predmetInstancia;
}
public void setPredmetInstancia(PredmetInstancia predmetInstancia) {
this.predmetInstancia = predmetInstancia;
}
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "den", nullable = false)
public Den getDen() {
return this.den;
}
public void setDen(Den den) {
this.den = den;
}
@Temporal(TemporalType.TIME)
@Column(name = "od", nullable = false, length = 15)
public Date getOd() {
return this.od;
}
public void setOd(Date od) {
this.od = od;
}
@Temporal(TemporalType.TIME)
@Column(name = "do", nullable = false, length = 15)
public Date getDo_() {
return this.do_;
}
public void setDo_(Date do_) {
this.do_ = do_;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "okno")
public Set<OsobaRola> getInstanciaRoly() {
return this.instanciaRoly;
}
public void setInstanciaRoly(Set<OsobaRola> instanciaRolas) {
this.instanciaRoly = instanciaRolas;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "oknoByCielOkno")
public Set<PoziadavkaOkno> getPoziadavkaOknosForCielOkno() {
return this.poziadavkaOknosForCielOkno;
}
public void setPoziadavkaOknosForCielOkno(Set<PoziadavkaOkno> poziadavkaOknosForCielOkno) {
this.poziadavkaOknosForCielOkno = poziadavkaOknosForCielOkno;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "okno")
public Set<Volno> getVolnos() {
return this.volnos;
}
public void setVolnos(Set<Volno> volnos) {
this.volnos = volnos;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "oknoByZdrojOkno")
public Set<PoziadavkaOkno> getPoziadavkaOknosForZdrojOkno() {
return this.poziadavkaOknosForZdrojOkno;
}
public void setPoziadavkaOknosForZdrojOkno(Set<PoziadavkaOkno> poziadavkaOknosForZdrojOkno) {
this.poziadavkaOknosForZdrojOkno = poziadavkaOknosForZdrojOkno;
}
@OneToMany(mappedBy = "okno")
public List<InstanciaOkna> getInstancieOkna() {
return instancieOkna;
}
public void setInstancieOkna(List<InstanciaOkna> instancieOkna) {
this.instancieOkna = instancieOkna;
}
@Override
public String toString() {
return String.format("%s od %s do %s", den.getNazov(), od, do_);
}
}
包sk.uniba.edo.EDOApp.model;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Set;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.manytone;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入javax.persistence.Temporal;
导入javax.persistence.TemporalType;
导入org.hibernate.annotations.Fetch;
导入org.hibernate.annotations.FetchMode;
/**
*由hbm2java生成的Okno
*/
@实体
@表(name=“okno”,schema=“rozvrh”)
公共类Okno实现java.io.Serializable{
私人长id;
私人印刷品印刷品印刷品印刷品印刷品印刷品;
私有预实例化预实例化;
私人书房;
私人日期od;
私人约会;
私有集instanciaRoly=新哈希集(0);
私有集poziadavkaokonosforcielono=新哈希集(0);
私有集volnos=新哈希集(0);
私有集poziadavkaokonosforzdrojokno=新哈希集(0);
私有列表instancieOkna=newarraylist();
@身份证
@列(name=“id”,unique=true,nullable=false)
公共长getId(){
返回此.id;
}
公共无效集合id(长id){
this.id=id;
}
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“typ\u okno”,nullable=false)
公共TypOkno getTypOkno(){
返回此.typOkno;
}
公共无效setTypOkno(TypOkno-TypOkno){
this.typOkno=typOkno;
}
@manytone(fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name=“instancia”,nullable=false)
公共PredmetInstancia getPredmetInstancia(){
返回此。predmetInstancia;
}
public void setPredmetInstancia(PredmetInstancia PredmetInstancia){
this.predmetInstancea=predmetInstancea;
}
@manytone(fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name=“den”,nullable=false)
公厕{
把这个还给我;
}
公共无效设置(Den){
this.den=den;
}
@时态(TemporalType.TIME)
@列(name=“od”,null=false,长度=15)
公开日期{
把这个还给我;
}
公共无效设置日期(日期){
这个。od=od;
}
@时态(TemporalType.TIME)
@列(name=“do”,null=false,长度=15)
公开日期{
把这个还给我;
}
公共作废设置日期(日期){
this.do u=do;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“okno”)
公共集getInstanceRoly(){
立即返回此文件;
}
公共无效setInstanceAroly(设置InstanceArolas){
this.instanciaRoly=instanciaRolas;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“oknoByCielOkno”)
公共集getpoziadavkaokonosforcielono(){
返回此.poziadavkaokonosforcielono;
}
公共无效设置POZIADAVKAOKNOSFORCIELONO(设置POZIADAVKAOKNOSFORCIELONO){
this.poziadavkaonosforcielono=poziadavkaonosforcielono;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“okno”)
公共集getVolnos(){
把这个还给沃诺斯;
}
公共无效设置卷号(设置卷号){
this.volnos=volnos;
}
@OneToMany(fetch=Fet
package sk.uniba.edo.EDOApp.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Zaznam generated by hbm2java
*/
@Entity
@Table(name = "zaznam", schema = "hodnotenie")
public class Zaznam implements java.io.Serializable {
private long id;
private Osoba zaznamenalOsoba;
private Osoba osoba;
private InstanciaOkna instanciaOkna;
private Terminal terminal;
private Date casPrichodu;
private Date casZaznamu;
@Id
@Column(name = "id", unique = true, nullable = false)
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "zaznamenal", nullable = false)
public Osoba getZaznamenalOsoba() {
return this.zaznamenalOsoba;
}
public void setZaznamenalOsoba(Osoba osobaByZaznamenal) {
this.zaznamenalOsoba = osobaByZaznamenal;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "osoba", nullable = false)
public Osoba getOsoba() {
return this.osoba;
}
public void setOsoba(Osoba osobaByOsoba) {
this.osoba = osobaByOsoba;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "instancia_okna", nullable = false)
public InstanciaOkna getInstanciaOkna() {
return instanciaOkna;
}
public void setInstanciaOkna(InstanciaOkna instanciaOkna) {
this.instanciaOkna = instanciaOkna;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "terminal", nullable = false)
public Terminal getTerminal() {
return this.terminal;
}
public void setTerminal(Terminal terminal) {
this.terminal = terminal;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "cas_prichodu", nullable = false, length = 29)
public Date getCasPrichodu() {
return this.casPrichodu;
}
public void setCasPrichodu(Date casPrichodu) {
this.casPrichodu = casPrichodu;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "cas_zaznamu", nullable = false, length = 29)
public Date getCasZaznamu() {
return this.casZaznamu;
}
public void setCasZaznamu(Date casZaznamu) {
this.casZaznamu = casZaznamu;
}
@Override
public String toString() {
return String.format("[Zaznam %d: cas prichodu %s pre osobu %d]", id, casPrichodu, osoba.getId());
}
}
package sk.uniba.edo.EDOApp.model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "instancia_okna", schema = "rozvrh")
public class InstanciaOkna implements Serializable {
private long id;
private Okno okno;
private Date datumcasOd;
private Date datumcasDo;
private List<Zaznam> zaznamy;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name = "okno", nullable = false)
public Okno getOkno() {
return okno;
}
public void setOkno(Okno okno) {
this.okno = okno;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "datumcas_od")
public Date getDatumcasOd() {
return datumcasOd;
}
public void setDatumcasOd(Date datumcas) {
this.datumcasOd = datumcas;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "datumcas_do")
public Date getDatumcasDo() {
return datumcasDo;
}
public void setDatumcasDo(Date datumcasDo) {
this.datumcasDo = datumcasDo;
}
@OneToMany(mappedBy = "instanciaOkna")
public List<Zaznam> getZaznamy() {
return zaznamy;
}
public void setZaznamy(List<Zaznam> zaznamy) {
this.zaznamy = zaznamy;
}
@Override
public String toString() {
return String.format("[InstanciaOkna: ID=%d, od=%s, do=%s, okno=%s]", id, datumcasOd, datumcasDo, okno);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof InstanciaOkna))
return false;
InstanciaOkna io = (InstanciaOkna) obj;
return (id == io.id);
}
@Override
public int hashCode() {
return new Long(id).hashCode();
}
}
package sk.uniba.edo.EDOApp.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
* Okno generated by hbm2java
*/
@Entity
@Table(name = "okno", schema = "rozvrh")
public class Okno implements java.io.Serializable {
private long id;
private TypOkno typOkno;
private PredmetInstancia predmetInstancia;
private Den den;
private Date od;
private Date do_;
private Set<OsobaRola> instanciaRoly = new HashSet<OsobaRola>(0);
private Set<PoziadavkaOkno> poziadavkaOknosForCielOkno = new HashSet<PoziadavkaOkno>(0);
private Set<Volno> volnos = new HashSet<Volno>(0);
private Set<PoziadavkaOkno> poziadavkaOknosForZdrojOkno = new HashSet<PoziadavkaOkno>(0);
private List<InstanciaOkna> instancieOkna = new ArrayList<>();
@Id
@Column(name = "id", unique = true, nullable = false)
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "typ_okno", nullable = false)
public TypOkno getTypOkno() {
return this.typOkno;
}
public void setTypOkno(TypOkno typOkno) {
this.typOkno = typOkno;
}
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "instancia", nullable = false)
public PredmetInstancia getPredmetInstancia() {
return this.predmetInstancia;
}
public void setPredmetInstancia(PredmetInstancia predmetInstancia) {
this.predmetInstancia = predmetInstancia;
}
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "den", nullable = false)
public Den getDen() {
return this.den;
}
public void setDen(Den den) {
this.den = den;
}
@Temporal(TemporalType.TIME)
@Column(name = "od", nullable = false, length = 15)
public Date getOd() {
return this.od;
}
public void setOd(Date od) {
this.od = od;
}
@Temporal(TemporalType.TIME)
@Column(name = "do", nullable = false, length = 15)
public Date getDo_() {
return this.do_;
}
public void setDo_(Date do_) {
this.do_ = do_;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "okno")
public Set<OsobaRola> getInstanciaRoly() {
return this.instanciaRoly;
}
public void setInstanciaRoly(Set<OsobaRola> instanciaRolas) {
this.instanciaRoly = instanciaRolas;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "oknoByCielOkno")
public Set<PoziadavkaOkno> getPoziadavkaOknosForCielOkno() {
return this.poziadavkaOknosForCielOkno;
}
public void setPoziadavkaOknosForCielOkno(Set<PoziadavkaOkno> poziadavkaOknosForCielOkno) {
this.poziadavkaOknosForCielOkno = poziadavkaOknosForCielOkno;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "okno")
public Set<Volno> getVolnos() {
return this.volnos;
}
public void setVolnos(Set<Volno> volnos) {
this.volnos = volnos;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "oknoByZdrojOkno")
public Set<PoziadavkaOkno> getPoziadavkaOknosForZdrojOkno() {
return this.poziadavkaOknosForZdrojOkno;
}
public void setPoziadavkaOknosForZdrojOkno(Set<PoziadavkaOkno> poziadavkaOknosForZdrojOkno) {
this.poziadavkaOknosForZdrojOkno = poziadavkaOknosForZdrojOkno;
}
@OneToMany(mappedBy = "okno")
public List<InstanciaOkna> getInstancieOkna() {
return instancieOkna;
}
public void setInstancieOkna(List<InstanciaOkna> instancieOkna) {
this.instancieOkna = instancieOkna;
}
@Override
public String toString() {
return String.format("%s od %s do %s", den.getNazov(), od, do_);
}
}