Java Hibernate,无法执行查询,SQL错误:17059,SQLState:99999

Java Hibernate,无法执行查询,SQL错误:17059,SQLState:99999,java,sql,spring,hibernate,spring-data-jpa,Java,Sql,Spring,Hibernate,Spring Data Jpa,我的问题是: @Query(value = "select * from Person where ID=?1 and NAME=?2", nativeQuery = true) List<Person> getPersonID(Integer id, String name); 我的实体: @Entity @Table(name = "PERSON") public class Person { @Id @Column(name = "ID") priv

我的问题是:

@Query(value = "select * from Person where ID=?1 and NAME=?2", nativeQuery = true)
List<Person> getPersonID(Integer id, String name);
我的实体:

@Entity
@Table(name = "PERSON")
public class Person {

    @Id
    @Column(name = "ID")
    private Integer id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "BIRTHDAY")
    private Date birthday;

    @Column(name = "SIZE")
    private Integer size;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }
如果我在sql开发人员中尝试我的查询,它会正常工作。 看起来我的数据类型不匹配,但我检查了所有数据类型,我发现所有数据类型都是正确的

有没有人遇到过和我一样的问题,可以帮忙? 或者有人知道问题出在哪里吗


提前谢谢

我不会执行本机查询,因为
select*
可能会引入绑定问题。您要么选择每个字段,要么如上所述使用HQL查询。

可能是驱动程序不匹配?您使用的是什么版本的oracle?您是否也可以发布您的
Person
实体类?我的oracle版本是:11.2.0.4.0检查数据库中的两个字段的数据,这两个字段分别是
Integer
Date
。可能存储到数据库的数据有问题。比如整数或日期格式的大数字。我也有这个问题,Moodi是对的,可能是绑定不匹配,一个字段没有绑定到Orable数据库中的正确类型,即Java Integer VARCHAR2,而不是数字。这确实提供了一个答案:select*可能会引入一个结果绑定问题,即名称可能不规则地绑定到id。这就是为什么他不应该使用本机查询,而应该使用HQL查询,例如
select p fromPerson p,其中p.id=?1和p.name=?2
。至少值得一试。
@Entity
@Table(name = "PERSON")
public class Person {

    @Id
    @Column(name = "ID")
    private Integer id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "BIRTHDAY")
    private Date birthday;

    @Column(name = "SIZE")
    private Integer size;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }