2011-01-23 52 views
1

我有一個包含目前2個不同的項目,但是當我嘗試查詢DAO返回2號這是正確的名單,但在列表中每個項目的數據庫是數據庫中的第一個項目,而不是一個數據庫這兩個獨特的項目。這真的讓我感到困惑,我不知道如何或爲什麼這樣做有任何人經歷過這一點?重複在Hibernate查詢

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,這個問題是因我的鍛鍊類的默認序列化的設置了序列化的問題。現在修好了,謝謝你的幫助! 提前致謝 Chris

+0

顯示您的「鍛鍊」類及其映射。 – axtavt 2011-01-23 18:30:20

+0

@axtavt應該現在起來,謝謝 – Chris 2011-01-23 18:35:10

回答

1

唯一鍵可能存在問題。 確保您的@Id字段代表唯一密鑰。

1

你有兩個相同的用戶名db的鍛鍊?

如果是這樣,那麼你不應該使用用戶名作爲id。

我不知道你的域名。但在猜測我會給每個鍛鍊一個唯一的ID(可能是一個長),然後用戶名可能是一個用戶對象的外鍵。

所以,你這時應該有這樣的事情:

@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; 

希望這有助於。