org.postgresql.util.Psqlexception: ERROR: Operator does not exist: bigint = bytea

Asked

Viewed 805 times

0

I have a method that retrieves all paths from the appendices of a ledger, so the appendices can be printed. They are listed in a p:datatable within a dialog, but when opening the screen so that I can press the button that opens the dialog this happens:

org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = bytea
Dica: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Posição: 208

Method to recover attachments

public List<ArquivoRelato> recuperarTodosOsAnexosDoLivro() {
    List<ArquivoRelato> todosArquivosRelato = new ArrayList<ArquivoRelato>();
    Map<String, Object> params = new HashMap<String, Object>();
    String queryArquivo = "SELECT arel.idArquivoRelato, arel.caminhoarquivo, arel.caminhoverarquivo, arel.descricao "
            + "FROM ArquivoRelato arel " 
            + "WHERE (arel.relato_idrelato IN (SELECT idrelato FROM relato r WHERE r.livro_idlivro = :idLivro)) "
            + "OR (arel.retificacaorelato_idretificacaorelato IN (SELECT idretificacaorelato FROM retificacaorelato rr " 
            + "WHERE rr.relato_idrelato IN (SELECT idrelato FROM relato r WHERE r.livro_idlivro = :idLivro)))";
    params.put("idLivro", livroSelecionado.getIdLivro());

    List<Object[]> objects = objectDao.listPesqQuery(queryArquivo, params);

    for (Object[] o : objects) {
        ArquivoRelato arquivoRelatoTemp = new ArquivoRelato();
        BigInteger id = (BigInteger) o[0];
        arquivoRelatoTemp.setIdArquivoRelato(id.longValue());
        arquivoRelatoTemp.setCaminhoArquivo((String) o[1]);
        arquivoRelatoTemp.setCaminhoVerArquivo((String) o[2]);
        arquivoRelatoTemp.setDescricao((String) o[3]);
        String nomeArquivo = arquivoRelatoTemp.getCaminhoVerArquivo();
        arquivoRelatoTemp.setNomeArquivo(nomeArquivo.substring(arquivoRelatoTemp.getCaminhoVerArquivo().lastIndexOf("/") + 1));
        todosArquivosRelato.add(arquivoRelatoTemp);
    }

    return todosArquivosRelato;
}

View where attachments are displayed

<p:dialog widgetVar="listaAnexosDialog" style="display: none">

                <p:scrollPanel mode="native" style="border: none;">
                    <h:outputText value="Escolha os arquivos a serem anexados. Caso não escolha nenhum, o Livro de Ordem será impresso sem anexos" 
                              style="color: #f00; font-weight: bold;"/>

                    <br />
                    <br />

                    <p:dataTable var="itemTodosAnexos" lazy="true" rowKey="#{itemTodosAnexos.idArquivoRelato}"
                                 selection="#{livroController.arquivosRelatoSelecionados}"
                                 value="#{livroController.recuperarTodosOsAnexosDoLivro()}"
                                 emptyMessage="Esse livro não possui anexos"
                                 rendered="#{not empty livroController.recuperarTodosOsAnexosDoLivro()}">
                        <p:column selectionMode="multiple"/>

                        <p:column headerText="Descrição">
                            <h:outputText value="#{not empty itemTodosAnexos.descricao ? itemTodosAnexos.descricao : 'Sem descrição'}"/>
                        </p:column>

                        <p:column headerText="Nome do Arquivo">
                            <h:outputText value="#{itemTodosAnexos.nomeArquivo}"/>
                        </p:column>
                    </p:dataTable>

                    <br />

                    <p:commandButton value="Imprimir" icon="impressao" ajax="false"
                                     actionListener="#{livroController.imprimirLivro()}"/>
                </p:scrollPanel>

            </p:dialog>

Book Entity

@Entity
public class Livro implements Serializable {

private static final long serialVersionUID = 1L;

private Long idLivro;
private Art art;
private Date dataCriacao;
private Date dataRealInicioObraServico;
private boolean encerrado;
private List<Relato> relatos = new ArrayList<Relato>();
private Date dataEncerramento;

public Livro() {
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdLivro() {
    return idLivro;
}

public void setIdLivro(Long idLivro) {
    this.idLivro = idLivro;
}

@OneToOne
public Art getArt() {
    return art;
}

public void setArt(Art art) {
    this.art = art;
}

@Temporal(TemporalType.TIMESTAMP)
public Date getDataCriacao() {
    return dataCriacao;
}

public void setDataCriacao(Date dataCriacao) {
    this.dataCriacao = dataCriacao;
}

@Temporal(TemporalType.DATE)
public Date getDataRealInicioObraServico() {
    return dataRealInicioObraServico;
}

public void setDataRealInicioObraServico(Date dataRealInicioObraServico) {
    this.dataRealInicioObraServico = dataRealInicioObraServico;
}

public boolean isEncerrado() {
    return encerrado;
}

public void setEncerrado(boolean encerrado) {
    this.encerrado = encerrado;
}

@OneToMany(mappedBy="livro")
public List<Relato> getRelatos() {
    return relatos;
}

public void setRelatos(List<Relato> relatos) {
    this.relatos = relatos;
}

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
public Date getDataEncerramento() {
    return dataEncerramento;
}

public void setDataEncerramento(Date dataEncerramento) {
    this.dataEncerramento = dataEncerramento;
}

 }

Entidade Arquivorelato

@Entity
public class ArquivoRelato implements Serializable {
private static final long serialVersionUID = 1L;

private Long idArquivoRelato;
private String caminhoArquivo;
private String nomeArquivo;
private String caminhoVerArquivo;
private String descricao;
private Relato relato;
private RetificacaoRelato retificacaoRelato;

public ArquivoRelato() {
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdArquivoRelato() {
    return idArquivoRelato;
}

public void setIdArquivoRelato(Long idArquivoRelato) {
    this.idArquivoRelato = idArquivoRelato;
}

public String getCaminhoArquivo() {
    return caminhoArquivo;
}

public void setCaminhoArquivo(String caminhoArquivo) {
    this.caminhoArquivo = caminhoArquivo;
}

@Transient
public String getNomeArquivo() {      
    return nomeArquivo;
}

public void setNomeArquivo(String nomeArquivo) {
    this.nomeArquivo = nomeArquivo;
}


public String getCaminhoVerArquivo() {
    return caminhoVerArquivo;
}

public void setCaminhoVerArquivo(String caminhoVerArquivo) {
    this.caminhoVerArquivo = caminhoVerArquivo;
}

@Lob
@Type(type = "org.hibernate.type.StringClobType")
public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

@ManyToOne(cascade = {CascadeType.ALL})
public Relato getRelato() {
    return relato;
}

public void setRelato(Relato relato) {
    this.relato = relato;
}

@ManyToOne
public RetificacaoRelato getRetificacaoRelato() {
    return retificacaoRelato;
}

public void setRetificacaoRelato(RetificacaoRelato retificacaoRelato) {
    this.retificacaoRelato = retificacaoRelato;
}
}
  • The error indicated by the exception shows that there is a comparison between two values of different types. Take a look at position 208 of your query. It is in this position that there is a comparison between two different types.

  • Good morning, probably the parameter of your query is going null. params.put("idLivro", livroSelecionado.getIdLivro());

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.