Hibernate映射重复列(在实体内)

时间:2016-01-29 02:00:11

标签: java hibernate

表格如下所示:为简单起见,我跳过几列

ColumnnID   ColumnA    ColumnB
     1         1           A
     2         1           B
     3         2           C
     4         3           C

表映射到实体MyClass

class MyClass {

  @Id
  private long columnId;

  @column(name = "columnA")
  private long columnA;

  @column(name = "columnB")
  private long columnB;
}

执行简单查询(条件)后,我的hibernate实体看起来不像这样

Criteria criteria = this.getSessionFactory().getCurrentSession()
                .createCriteria(MyClass.class);

和结果:

data: {
    myClass : {
        columnId: 1
        columnA: 1
        mapColumnB : [
           A,
           B    
        ],
     },
      myClass : {
        columnId: 3
        columnA: 2
        mapColumnB : [
           C   
        ],
     },
     myClass : {
        columnId: 4
        columnA: 3
        mapColumnB : [
           C    
        ],
     }

    }

有什么想法吗?需要在实体内进行映射。

如果我能做到并且只能逐行获取,那么在Java中重建列表到我需要的演示文稿的有效方法是什么?

1 个答案:

答案 0 :(得分:0)

编辑答案是针对原始问题(在帖子所有者(提问者)编辑问题之前!!)并且它不适用于当前版本的问题!!!

您提到的预期结果 实体,它可能是 criteria hql 查询。

您可以根据数据/表格/查询编写实体,但您需要为实体提供Id(从唯一字段映射( s)),并且由于您的示例数据没有唯一列,因此您无法添加额外的列( PK / Unique )到表格或者您必须使用Id复合键,我的意思是对(ColumnA and ColumnB)使用Id的组合,只需要做一点搜索你,看看怎么做;只要您这样做,您就可以在没有任何复杂的条件 hql 查询的情况下获得预期的结果。