hibernate错误“运算符不存在:bigint=character variating”

xpcnnkqh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(223)

我使用hibernate读取数据库数据,但在运行查询时,表之间的关系出现了问题。我没有找到错误的原因:
2021-01-23 18:16:55.427 warn 1192---[nio-8080-exec-2]o.h.engine.jdbc.spi.sqlexceptionhelper:sql错误:0,sqlstate:42883 2021-01-23 18:16:55.427错误1192---[nio-8080-exec-2]o.h.engine.jdbc.spi.sqlexceptionhelper:error:运算符不存在:bigint=字符变化的dica:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。波西çã电话:384
这就是问题所在:

public interface QueryUsuario extends CrudRepository<EntidadeUsuario, Integer> {

    @Query(value = "select * from usuario where email = :email", nativeQuery = true)
    public EntidadeUsuario consultaUsuarioPorPorEmail(@Param("email") String email); 

}

我就是这样称呼这个查询的:

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

实体:

@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脚本:

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);
rqcrx0a6

rqcrx0a61#

我明白了,这个错误是因为entidadeusuario的id是一个整数,而不是一个字符串。我改变了这一点:

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

对此:

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

相关问题