Java 休眠映射重复列(在实体内)
表如下所示:为了简单起见,我跳过了几列Java 休眠映射重复列(在实体内),java,hibernate,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 = "
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中,什么样的方法可以有效地将列表重建为我需要的演示文稿?编辑:答案是针对原始问题(由帖子所有者(asker)编辑问题之前)!!,而不是针对问题的当前版本
您提到的预期结果,不是一个实体,它可能只是一个
条件
或hql
查询的结果
您可以根据数据/表/查询写入实体,但需要为实体提供Id
(从唯一字段映射),并且由于示例数据没有唯一列,因此无法写入,因此您必须向表中添加额外列(PK/unique),或者必须为Id
使用复合键,我的意思是使用(ColumnA和ColumnB)
的组合作为Id
,只需做一点搜索,你就会知道如何做;一旦您这样做了,您将能够获得预期的结果,而无需任何复杂的条件或hql查询