我有一个数据库,其中当前包含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没有此类问题,问题是由我的健身课程的默认序列化设置引起的序列化问题。现在固定修复,感谢您的帮助!
提前致谢
克里斯
最佳答案
您在数据库中是否有两个使用相同用户名的锻炼?
如果是这样,则您不应使用用户名作为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;
希望这可以帮助。