我有一个数据库,其中当前包含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;


希望这可以帮助。

09-10 02:10
查看更多