有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

大家好,我正在努力让我的班级坚持到我的数据库,但我遇到了一个问题,我不知道如何解决。我正在尝试与我的用户映射Score的三个实例,但我不确定我是如何做到这一点的。感谢您的帮助。谢谢:)

用户级狙击手

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

共 (1) 个答案

  1. # 1 楼答案

    虽然这里有一个公认的答案,但我不明白拟议的映射如何区分高分、低分和平均分

    你可以考虑使用一个映射,如下面的分数表将有一个列“SCORYSY类型”,它可以映射到枚举的“记分符”:

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