JPA / Hibernate select查询返回重复记录
我有一个表,例如,具有ID,State和User_ID的Instrument作为列。
因此,我有这个JPA查询来返回具有匹配的User_ID的所有仪器记录。
query = manager.createQuery("SELECT instrument from Instrument instrument where instrument.User_ID=:User_ID",Instrument.class);
query.setParameter("User_ID", User_ID);
List<Instrument> instruments= query.getResultList();
for(Instrument instrument:instruments){
System.out.println("Instrument ID "+instrument.getID());
// using sysout as it is not prod code yet
}
它仅返回第一个记录,重复的次数与匹配记录的次数相同。
11:13:01,703 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 111:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1
11:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1
我在Db中有3条记录,仪器ID为1,2和3
我在hibernate状态下启用了show sql查询,该查询直接在数据库上运行良好,并返回了不同的记录。
hibernate查询:
select instrumentjdo0_.User_ID as member_U1_0_, instrumentjdo0_.ID as ID2_0_, instrumentjdo0_.state as state4_0_ from instrument instrumentjdo0_ where instrumentjdo0_.User_ID=?
文书实体
import javax.persistence.Column;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "instrument")
public class Instrument{
@Id
@Column(name="User_ID", length=9, unique=true, nullable=false)
String user_ID;
@Column(name="ID",nullable=false)
String ID;
@Column(name="state",nullable=false)
String state;
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getUserID() {
return user_ID;
}
public void setUserID(String userID) {
this.user_ID = userID;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
不知道我在想什么。
回答:
问题是工具实体中的错误列已@ID
为其分配了属性。
我从中删除了它,User_ID
并将其添加到ID
它,它工作正常。
以上是 JPA / Hibernate select查询返回重复记录 的全部内容, 来源链接: utcz.com/qa/401354.html