JPA/Hibernate将动态列映射为对象列表

eme*_*ava 10 java orm hibernate jpa

我有一个现有的DB模式,我试图用JPA/Hibernate注释进行ORM'ise.该模式旨在允许客户端使用表中的每一行来分配额外信息.现有解决方案不是使用键值模式,而是在安装时确定所需的动态列数,并更改表以为动态字段添加额外的列.实际上,每个表都有一组已知/固定列和一组动态列.

|table:X|
|id|known1|known2|dynamic1|dynamic2|..|dynamicx|
Run Code Online (Sandbox Code Playgroud)

参数表指示哪些表具有额外的动态字段

|table:parameter|
|table|column|meta|
|x|dynamic1||
|x|dynamic2||
|x|dynamicx||
|y|dynamic15||
Run Code Online (Sandbox Code Playgroud)

在JPA建模中,很容易为每个表上的已知固定列创建定义.

@Entity
@Table(name="x")
public class X
{
    @Id
    private Long id = null;

    @Column(name="known1")
    private Long known1 = null;
}
Run Code Online (Sandbox Code Playgroud)

我计划将参数表建模为一个类,然后允许我的每个类都有一个参数列表.我不确定我应该如何映射这个List对象,以便将详细信息写入同一个表.

@Entity
@Table(name="x")
public class X
{
    // @Column(name="x",class="X") ??????????
    List<Parameter> dynamicColumns = null;
}
Run Code Online (Sandbox Code Playgroud)

我相信我可以使用自定义命名策略来正确确定动态字段的列名称.这种映射甚至可能吗?

Ama*_*icA 2

我认为您需要使用 nativeQuery 来使用 jpa 获取此动态数据。