我有一个现有的数据库模式,我正在尝试使用JPA/Hibernate批注进行ORM'ise。该架构设计为允许客户使用表中的每一行来分配额外的信息 。现有解决方案在安装时确定所需的动态列数,而不是使用键值模式 ,并将表更改为 为动态字段添加额外的列。实际上,每个表都有一组已知/固定的列和一组动态列。JPA/Hibernate将动态列映射为对象列表
|table:X|
|id|known1|known2|dynamic1|dynamic2|..|dynamicx|
的参数表指示哪个表都具有额外的动态字段
|table:parameter|
|table|column|meta|
|x|dynamic1||
|x|dynamic2||
|x|dynamicx||
|y|dynamic15||
在JPA建模此,很容易创建用于每个表中的已知的固定的列定义。
@Entity
@Table(name="x")
public class X
{
@Id
private Long id = null;
@Column(name="known1")
private Long known1 = null;
}
我打算将参数表建模为一个类,然后让每个类都有一个参数列表。 我不确定我该如何去映射这个List对象,以便将细节写入同一张表。
@Entity
@Table(name="x")
public class X
{
// @Column(name="x",class="X") ??????????
List<Parameter> dynamicColumns = null;
}
我相信我可以使用自定义命名策略来正确确定动态字段的列名称。这种映射的类型甚至可能是 ?
我希望你能够改变数据库......这听起来好像是需要一些标准化的模式。 – Zoidberg 2010-09-07 10:29:49
这个问题让我们假设我不能。我想我已经接近击中了砖墙。 – emeraldjava 2010-09-07 10:49:40