gpt4 book ai didi

java - JPA/Hibernate 选择查询返回重复记录

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:49 25 4
gpt4 key购买 nike

我有一个表,比如说,以 ID、State 和 User_ID 作为列的 Instrument。

所以我有这个 JPA 查询来返回所有具有匹配项的仪器记录用户 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   1
11: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 中有三个记录,仪器 ID 分别为 1、2 和 3

我在 hibernate 上启用了 show sql query,查询直接在数据库上运行良好并返回不同的记录。

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 并且它工作正常。

关于java - JPA/Hibernate 选择查询返回重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com