大家好,我正在尝试让我的类(class)保留到我的数据库中,但是我遇到了一个问题,我不确定如何解决。我正在尝试将 Score 的三个实例与我的用户映射,但我不确定如何让它发挥作用。任何帮助表示赞赏。谢谢:)
用户类 Snipit。
@Column(name="userName", unique=true)
private String username;
@Column(name="password")
private String password;
//I am not sure how to map the three fields below.
private Score highestScore;
private Score averageScore;
private Score lowestScore;
最佳答案
虽然这里有一个公认的答案,但我没有看到建议的映射如何区分高分、低分和平均分?
您可以考虑使用如下所示的映射,其中分数表将有一个列“score_type”,可以映射到枚举“ScoreType”:
public class User{
@Column(name="userName", unique=true)
private String username;
@Column(name="password")
private String password;
@OneToMany
@MapKeyColumn(name="score_type")
@MapKeyEnumerated
private Map<ScoreType, Score> scores;
public Score getHighScore(){
return scores.get(ScoreType.HIGH);
}
public void setScore(Score score){
score.setUser(this);
scores.put(score.getType(), score);
}
}
和
public class Score{
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Column(name = "type")
@Enumerated(EnumType.String)//or ordinal
private ScoreType type;
}
关于java - 数据库的对象映射 JPA/openEJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354321/