gpt4 book ai didi

java - Hibernate 查询中的重复项

转载 作者:行者123 更新时间:2023-11-30 05:06:58 26 4
gpt4 key购买 nike

我有一个数据库,当前包含 2 个不同的项目,但是当我尝试查询数据库时,DAO 返回一个大小为 2 的列表,这是正确的,但列表中的每个项目都是数据库中的第一个项目,而不是两个唯一的项目项目 。这真的让我很困惑,我不太明白它是如何或为什么这样做的,以前有人经历过吗?

    public List<Workout> getHistory(String username) {
String sql = "from Workout w where w.username = '"+username+"'";
return template.find(sql);

}

 

@Entity
@Table(name="workout")
public class Workout {

private static Logger logger = Logger.getLogger(Workout.class);

@Id
@Column(name="username")
private String username;

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

@Lob
@Column(name="workout")
byte[] workout;

public byte[] getWorkout() {
return workout;
}

public void setWorkout(byte[] workout) {
this.workout = workout;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getAdded_date() {
return added_date;
}

public void setAdded_date(String added_date) {
this.added_date = added_date;
}

}

对此的任何帮助将不胜感激。

事实证明,唯一 ID 不存在此类问题,问题是由我的锻炼类(class)的默认序列化设置引起的序列化问题。现在已修复,感谢您的帮助!提前致谢克里斯

最佳答案

数据库中是否有两个具有相同用户名的锻炼?

如果是这样,那么您不应该使用用户名作为 ID。

我不知道您的域名。但据猜测,我会给每个锻炼一个唯一的 ID(可能是 Long),然后用户名可以是 User 对象的外键。

所以你应该有这样的东西:

@Entity
@Table(name="workout")
public class Workout {

private static Logger logger = Logger.getLogger(Workout.class);

@Id
@Column(name="id")
private Long id;

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

希望这有帮助。

关于java - Hibernate 查询中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775571/

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