hibernate - hql select attribute null in tables -


i have 2 entities empleado , cargo :

@entity @table(name = "empleado") public class empleado  {  private integer id;  private string nombre;  private string codigo;  private cargo cargo;  @id @column(name = "id") @sequencegenerator(name = "seq", sequencename = "empleado_id_seq",allocationsize=1) @generatedvalue(strategy = generationtype.sequence, generator = "seq") public integer getid() {     return id; }  public void setid(integer id) {     this.id = id; }  @column(name = "nombre") public string getnombre() {     return nombre; }  public void setnombre(string nombre) {     this.nombre = nombre; }  @column(name = "codigo") public string getcodigo() {     return codigo; }  public void setcodigo(string codigo) {     this.codigo = codigo; }  @manytoone @joincolumn(name = "id_cargo_empresa") public cargo getcargo() {     return cargo; }  public void setcargo(cargo cargo) {     this.cargo = cargo; } 

}

@entity @table(name = "cargo") public class cargo implements serializable {  private integer id; private string nombre; private string descripcion;  @id @column(name = "id") @sequencegenerator(name = "seq", sequencename = "cargo_id_seq",allocationsize=1) @generatedvalue(strategy = generationtype.sequence, generator = "seq") public integer getid() {     return id; }  public void setid(integer id) {     this.id = id; }  @column(name = "nombre") public string getnombre() {     return nombre; }  public void setnombre(string nombre) {     this.nombre = nombre; }  @column(name = "descripcion") public string getdescripcion() {     return descripcion; }  public void setdescripcion(string descripcion) {     this.descripcion = descripcion; } 

and want following query in hql :

@override public list<empleadodto> obtenerlstempleado() {     stringbuilder sbquery = new stringbuilder();     sbquery.append("select new com.consorciojm.rrhh.empleado.util.empleadodto(");     sbquery.append("e.id,e.codigo,e.nombre,e.apellidopaterno,e.apellidomaterno,");     sbquery.append("e.dni,e.telefono,e.celular,e.cargo.id,e.cargo.nombre) ");     sbquery.append("from empleado e e.codigo not null ");     list<empleadodto> lstempleado = sessionfactory.getcurrentsession().createquery(sbquery.tostring()).list();     return lstempleado; } 

but there records in empleado have null in attribute cargo (id_cargo_empresa = null), need query return result e.cargo.id = null , e.cargo.nombre, in way records empleado data in cargo or null. query put above doesn't return because cargo null , e.cargo.nombre can not returned.

using e.cargo.nombre creates implicit inner join. filters out empleados null cargo. want left join:

select ..., cargo.nombre from empleado e  left koin e.cargo cargo  e.codigo not null 

also note using stringbuilderto create query both less readable, , less efficient concatenating parts using + (the compiler concatenate parts , store full query in class, instead of concatenating @ runtime).


Comments

Popular posts from this blog

javascript - how to protect a flash video from refresh? -

android - Associate same looper with different threads -

visual studio 2010 - Connect to informix database windows form application -