1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Mapeamento de entidade no hibernate

caros(as), estou tendo problema para mapear uma entidade do banco que na verdade é um view gerada por um function no BD Oracle, onde este entidade se trata de uma pesquisa com uma tabela temporária( global temporary table). Quando mapeado a entidade no hibernate ela gera linhas multiplas da primeira ocorrência do registro fim. EX:

obtidohttps://www.filepicker.io/api/file/RnBea9fWQk6Pzr4LQjv7

esperado : atributo setor deveria alternar entre x y z

repare que o primeiro registro é repito tantas vezes quanto numero de registros deveria existir. Já que uso apenas a tag para o nome.

Tentei este mapeamento através de para gerar uma chave multipla entre nome , modelo e o setor, onde o nome , modelo repete, e o setor se altera ( relacionamento: 1 x n ).

meu arquivo hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.com.embratel.stp.tabela">
  <class name="TabelaListaZeradosSetor" table="T_LAST_HOUR_SEC">
       <id name="CEL_NOMCELLSITE" column="CEL_NOMCELLSITE" type="string"/>
       <property name="CEL_NOMMODELO" column="CEL_NOMMODELO" type="string"/>
       <property name="DRF_COD_CELLSECTOR" column="DRF_COD_CELLSECTOR" type="string"/>
      <property name="BUSY_HOUR_DATE" column="BUSY_HOUR_DATE" type="string"/>
    <property name="BUSY_HOUR" column="BUSY_HOUR" not-null="false" type="string"/>
    <property name="SWITCH_NAME" column="SWITCH_NAME" not-null="false" type="string"/>
    <property name="CALLATTEMPTS" column="CALLATTEMPTS" not-null="false" type="java.lang.Integer"/>
    <property name="ESTABLISHED" column="ESTABLISHED" not-null="false" type="java.lang.Integer"/>
    <property name="ESTABLISHED_PERC" column="ESTABLISHED_PERC" not-null="false" type="java.lang.Float"/>
    <property name="FAILURES" column="FAILURES" not-null="false" type="java.lang.Integer"/>
    <property name="FAILURES_PERC" column="FAILURES_PERC" not-null="false" type="java.lang.Float"/>
    <property name="BLOCKCALLS" column="BLOCKCALLS" not-null="false" type="java.lang.Integer"/>
    <property name="BLOCK_PERC" column="BLOCK_PERC" not-null="false" type="java.lang.Float"/>
    <property name="DROPCALLS" column="DROPCALLS" not-null="false" type="java.lang.Integer"/>
    <property name="DROP_PERC" column="DROP_PERC" not-null="false" type="java.lang.Float"/>
   </class>
</hibernate-mapping>

Minha classe java

package br.com.embratel.stp.tabela;
import java.io.Serializable;
public class TabelaListaZeradosSetor implements Serializable{

    /**
     *CH-53685VCL : Criação de nova funcionalidade de sites zerados para apresentaçaõ de ultima hora com valor zero para chamadas completadas.
     */
    private static final long serialVersionUID = 1L;
    private String     BUSY_HOUR_DATE;
    private    String    BUSY_HOUR;
    private String     CEL_NOMCELLSITE;
    private String     DRF_COD_CELLSECTOR;
    private String     CEL_NOMMODELO;
    private String     SWITCH_NAME;
    private int     CALLATTEMPTS;
    private int     ESTABLISHED;
    private float    ESTABLISHED_PERC;
    private int        FAILURES;
    private float    FAILURES_PERC;
    private int        BLOCKCALLS;
    private float     BLOCK_PERC;
    private int     DROPCALLS;
    private float    DROP_PERC;


    public String[] toArray(){
        String [] retorno = new String[15];

        retorno[0] = this.CEL_NOMCELLSITE != null? this.CEL_NOMCELLSITE.toString(): "";
        retorno[1] = this.CEL_NOMMODELO != null? this.CEL_NOMMODELO.toString(): "";
        retorno[2] = this.DRF_COD_CELLSECTOR != null ? this.DRF_COD_CELLSECTOR : "";
        retorno[3] = this.BUSY_HOUR_DATE != null? this.BUSY_HOUR_DATE.toString(): "";
        retorno[4] = this.BUSY_HOUR != null? this.BUSY_HOUR.toString(): "";
        retorno[5] = this.SWITCH_NAME != null? this.SWITCH_NAME.toString(): "";
        retorno[6] = this.CALLATTEMPTS != 0? String.valueOf(this.CALLATTEMPTS) : "0";
        retorno[7] = this.ESTABLISHED != 0? String.valueOf(this.ESTABLISHED) : "0";
        retorno[8] = this.ESTABLISHED_PERC != 0? String.valueOf(this.ESTABLISHED_PERC) : "0";
        retorno[9] = this.FAILURES != 0? String.valueOf(this.FAILURES) : "0";
        retorno[10] = this.FAILURES_PERC != 0? String.valueOf(this.FAILURES_PERC) : "0";
        retorno[11] = this.BLOCKCALLS != 0? String.valueOf(this.BLOCKCALLS) : "0";
        retorno[12]= this.BLOCK_PERC != 0? String.valueOf(this.BLOCK_PERC) : "0";
        retorno[13]= this.DROPCALLS != 0? String.valueOf(this.DROPCALLS) : "0";
        retorno[14]= this.DROP_PERC != 0? String.valueOf(this.DROP_PERC) : "0";

        return retorno;
    }


    public String getCEL_NOMCELLSITE() {
        return CEL_NOMCELLSITE;
    }
    public void setCEL_NOMCELLSITE(String cel_nomcellsite) {
        CEL_NOMCELLSITE = cel_nomcellsite;
    }
    public String getCEL_NOMMODELO() {
        return CEL_NOMMODELO;
    }
    public void setCEL_NOMMODELO(String cel_nommodelo) {
        CEL_NOMMODELO = cel_nommodelo;
    }

    public float getBLOCK_PERC() {
        return BLOCK_PERC;
    }
    public void setBLOCK_PERC(float block_perc) {
        BLOCK_PERC = block_perc;
    }
    public int getBLOCKCALLS() {
        return BLOCKCALLS;
    }
    public void setBLOCKCALLS(int blockcalls) {
        BLOCKCALLS = blockcalls;
    }
    public int getCALLATTEMPTS() {
        return CALLATTEMPTS;
    }
    public void setCALLATTEMPTS(int callattempts) {
        CALLATTEMPTS = callattempts;
    }
    public float getDROP_PERC() {
        return DROP_PERC;
    }
    public void setDROP_PERC(float drop_perc) {
        DROP_PERC = drop_perc;
    }
    public int getDROPCALLS() {
        return DROPCALLS;
    }
    public void setDROPCALLS(int dropcalls) {
        DROPCALLS = dropcalls;
    }
    public int getESTABLISHED() {
        return ESTABLISHED;
    }
    public void setESTABLISHED(int established) {
        ESTABLISHED = established;
    }
    public float getESTABLISHED_PERC() {
        return ESTABLISHED_PERC;
    }
    public void setESTABLISHED_PERC(float established_perc) {
        ESTABLISHED_PERC = established_perc;
    }
    public int getFAILURES() {
        return FAILURES;
    }
    public void setFAILURES(int failures) {
        FAILURES = failures;
    }
    public float getFAILURES_PERC() {
        return FAILURES_PERC;
    }
    public void setFAILURES_PERC(float failures_perc) {
        FAILURES_PERC = failures_perc;
    }

    public String getBUSY_HOUR() {
        return BUSY_HOUR;
    }

    public void setBUSY_HOUR(String busy_hour) {
        BUSY_HOUR = busy_hour;
    }

    public String getBUSY_HOUR_DATE() {
        return BUSY_HOUR_DATE;
    }

    public void setBUSY_HOUR_DATE(String busy_hour_date) {
        BUSY_HOUR_DATE = busy_hour_date;
    }


    public String getSWITCH_NAME() {
        return SWITCH_NAME;
    }


    public void setSWITCH_NAME(String switch_name) {
        SWITCH_NAME = switch_name;
    }


    public String getDRF_COD_CELLSECTOR() {
        return DRF_COD_CELLSECTOR;
    }


    public void setDRF_COD_CELLSECTOR(String drf_cod_cellsector) {
        DRF_COD_CELLSECTOR = drf_cod_cellsector;
    }
}

Desde já agradeço a todos.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate ou faça a sua própria pergunta.