1

我有以下遗留数据库结构和内容:

order parameter        value
--------------------------------
1     user_login       user
1     user_password    123456
1     user_level       basic
2     user_login       admin
2     user_password    s3k42k
2     user_level       advanced

我想将其表示如下并利用一个名为“用户”的实体,以便我可以抽象出遗留结构的复杂性:

id    user  password  level
-------------------------------
1     user  123456    basic
2     admin s3k42k    advanced

我使用数据库中的视图做到了这一点,但我无法使用此视图进行更新。有没有办法使用 Hibernate 来表示遗留结构,这样我也可以更新?

4

1 回答 1

1

您最好的方法可能是规范化表格。从长远来看,这将使事情变得容易得多。您可以尝试的一件事这不是一个选项,是创建另一个名为 user 的表,该表至少包含一个主键和参数表中用户信息的 id。这将允许您将关系视为一对多并将其映射到休眠状态。例如,您可以执行以下操作:

注意我可能有错误的映射我只是在我的头顶上做了这个来说明这一点。

@Entity
class Parameter{

    @Column(name="order")
    private int order;

    @column(name="parameter")
    private String parameter;

    @column(name="value")
    private String value;

} 

@Entity
class User{

    @column(name="id")
    private int id;

    @OneToMany(cascade=ALL)
    @JoinTable(name="SECONDARY", 
        joinColumns={@JoinColumn(name="id")},
        inverseJoinColumns=@JoinColumn(name="order"))
    @MapKeyJoinColumn(name="parameter")
    private Map<String,Parameter> userData;

    public String getUserName(){
        return userdata.get("user_login")
    }

    etc.

}
于 2013-05-14T17:26:54.530 回答