Reputation: 863
I have a database that contains currently 2 different items but when i try to query the database the DAO returns a List of size 2 which is correct but each item in the list is the first item in the database instead of the two unique items . This has really puzzled me and I cant quite understand how or why it is doing this has anyone experienced this before?
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;
}
}
Any help at all on this would be greatly appreciated.
Turns out there was no such problems with the unique ID, the problem was a serialization issue caused by the set up of the default serialization of my workout class. Fixed now for the mean time thanks for your help! Thanks in Advance Chris
Upvotes: 1
Views: 2644
Reputation: 2201
There might be a problem with unique key.
Make sure your @Id
fields represent the unique key.
Upvotes: 1
Reputation: 8582
Do you have two Workouts in the db with the same username?
If so, then you shouldn't be using username as the id.
I don't know your domain. But at a guess I'd give each workout a unique id (probably a Long) and then username could be foreign key to a User object.
So you then should have something like this:
@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;
Hope this helps.
Upvotes: 1