我有一个现有的数据库架构,我正试图用JPA / Hibernate注释进行ORM。架构旨在 允许客户端使用表中的每一行来分配额外信息。而不是使用键值模式 现有解决方案在安装时确定所需的动态列数,并将表更改为 为动态字段添加额外的列。实际上,每个表都有一组已知/固定列和一组动态列。
|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;
}
我相信我可以使用自定义命名策略来正确确定动态字段的列名。这是 甚至可能的映射类型?
答案 0 :(得分:1)
我认为您需要使用nativeQuery来使用jpa获取此动态数据。
答案 1 :(得分:0)
在Hibernate中这是可能的,请参阅下面的文章。然而,这是一种古老的方法(2007年),我自己正在打破使用JPA来实现它。到目前为止没有成功
http://www.infoq.com/articles/hibernate-custom-fields
本主题中的另一个电子邮件主题是