我有以下遗留数据库结构和内容:
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
我使用数据库中的 View 来执行此操作,但我无法使用此 View 进行更新。有没有办法使用 Hibernate 来表示遗留结构,以便我也可以更新?
最佳答案
您最好的方法可能是标准化表格。从长远来看,这将使事情变得更加容易。您可以尝试的一件事(这不是一个选项)是创建另一个名为 user 的表,该表至少包含一个主键和参数表中用户信息的 id。这将允许您将关系视为一对多并使用 hibernate 进行映射。例如,您可以执行如下操作:
注意我可能有错误的映射,我只是凭空做这个来说明这一点。
@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.
}
关于java - 如何使用 Hibernate 表示遗留数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548386/