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;
}