Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
429 views
in Technique[技术] by (71.8m points)

java - Hibernate error "operator does not exist: bigint = character varying"

I'm using hibernate to read my database datas but i'm having a issue with the relationship of the tables when i run a query. And i don't find the reason That's the error:

2021-01-23 18:16:55.427 WARN 1192 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42883 2021-01-23 18:16:55.427 ERROR 1192 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: operator does not exist: bigint = character varying Dica: No operator matches the given name and argument types. You might need to add explicit type casts. Posi??o: 384

That's the query:

public interface QueryUsuario extends CrudRepository<EntidadeUsuario, Integer> {
    
    @Query(value = "select * from usuario where email = :email", nativeQuery = true)
    public EntidadeUsuario consultaUsuarioPorPorEmail(@Param("email") String email); 

}

And that's how I call the query:

public void consultaUsuario(String email) {
    var x = queryUsuario.consultaUsuarioPorPorEmail(email);
}

Entities:

@Getter
@Setter
@Table(name = "usuario")
@Entity
public class EntidadeUsuario {

    @Id
    @Column(name = "id_usuario")
    String idUsuario;
    
    @Column(name = "cd_usuario")
    String usuario;
    
    @Column(name = "senha")
    String senha;
    
    @Column(name = "email")
    String email;

    @Column(name = "nome")
    String nome;
    
    @Column(name = "descricao")
    String descricao;
    
    @Column(name = "endereco")
    String endereco;
    
    @Column(name = "foto")
    String fotoBase64;

    @Column(name = "dt_atz")
    Date data;

    @OneToMany(mappedBy = "idUsuario")
    private List<EntidadeUsuarioCursos> entidadeUsuarioCursos;
    
    // @OneToMany(mappedBy = "usuario")
    // private List<EntidadeGrupoEstudoUsuario> entidadeGrupoEstudoUsuario;
}

@Getter
@Setter
@Table(name = "usuario_perfil_cursos_interesse")
@Entity

    public class EntidadeUsuarioCursos {
    
        @Id
        @Column(name = "id_usuario_perfil_cursos_interesse")
        Integer idUsuarioPerfilCursosInteresse;
        
        @Getter(AccessLevel.NONE)
        @ManyToOne
        @JoinColumn(name = "id_usuario")
        EntidadeUsuario idUsuario;
        
        @Column(name = "id_curso")
        Integer idCurso;
        
        @Column(name = "dt_atz")
        Date data;
        
    }

sql script:

CREATE TABLE public.usuario (
    id_usuario bigint DEFAULT nextval('public.usuario_id_seq'::regclass) NOT NULL,
    cd_usuario character varying NOT NULL,
    senha character varying NOT NULL,
    dt_atz timestamp(0) without time zone,
    email character varying,
    nome character varying,
    endereco character varying,
    descricao character varying,
    foto bytea
);

ALTER TABLE ONLY public.usuario
    ADD CONSTRAINT usuario_pk PRIMARY KEY (id_usuario);

CREATE TABLE public.usuario_perfil_cursos_interesse (
    id_usuario bigint NOT NULL,
    id_curso bigint NOT NULL,
    dt_atz timestamp(0) without time zone,
    id_usuario_perfil_cursos_interesse bigint DEFAULT nextval('public.usuario_perfil_cursos_interesse_id_seq'::regclass) NOT NULL
);
ALTER TABLE ONLY public.usuario_perfil_cursos_interesse
    ADD CONSTRAINT usuario_perfil_cursos_interesse_fk FOREIGN KEY (id_usuario) REFERENCES public.usuario(id_usuario);
ALTER TABLE ONLY public.usuario_perfil_cursos_interesse
    ADD CONSTRAINT usuario_perfil_cursos_interesse_fk_1 FOREIGN KEY (id_curso) REFERENCES public.curso(id_curso);
question from:https://stackoverflow.com/questions/65864692/hibernate-error-operator-does-not-exist-bigint-character-varying

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I understood it, the error is because the id of EntidadeUsuario is a Integer, not a String. I change that:

@Id
@Column(name = "id_usuario")
String idUsuario;

To that:

@Id
@Column(name = "id_usuario")
Integer idUsuario;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...