java - 数据库的对象映射 JPA/openEJB

标签 java mysql jakarta-ee jpa openejb

大家好,我正在尝试让我的类(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/

相关文章:

java - WebLogic 应用程序中没有任何组件

java - Spring Security 预身份验证

jakarta-ee - 如何使用 weblogic 12c 快速部署多模块 EAR 项目?

java - 路径中的 Ant 大写与小写字符

php - 即使我没有更改任何内容,也要更新 TIMESTAMP 列?

java - 如何强制RestController响应csv文件

php - 一些数据库 fatal error

javascript - 如何在单击复选框时使用数据库中的值填充输入文本字段

java - 如何从 Java 中的 TreeMap 中提取 BigDecimals?

java - "Content is not allowed in prolog"使用 JAXB 解码 JSON 时