Java hibernate将多个列映射到arraylist
我想知道hibernate是否允许使用arrayList来表示多个列 例如: 我有一个名为“tableA”的表,其中有列: 表a: |id | c1 | c2 | c3 | c4| 我想创建一个java对象,使用arrayList映射到c1、c2、c3、c4列Java hibernate将多个列映射到arraylist,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我想知道hibernate是否允许使用arrayList来表示多个列 例如: 我有一个名为“tableA”的表,其中有列: 表a: |id | c1 | c2 | c3 | c4| 我想创建一个java对象,使用arrayList映射到c1、c2、c3、c4列 @Entity @Table(name = "tableA") public class tableA{ @Column(name = "id", unique = true, nullable
@Entity
@Table(name = "tableA")
public class tableA{
@Column(name = "id", unique = true, nullable = false)
public int id;
//QUESTION: How do I annotate here to map columns c1,c2,c3,c4 to below arraylist ? ----
public List<String> columns = new ArrayList<>();
//I tried this, but it doesn't work :
@Column(name = "c1", length=10)
public String getC1(){
return columns.get(0);
}
public String setC1(String c1){
columns.add(c1);
}
}
@实体
@表(name=“tableA”)
公共类表格{
@列(name=“id”,unique=true,nullable=false)
公共int id;
//问题:我如何在这里注释以将列c1、c2、c3、c4映射到arraylist下面----
public List columns=new ArrayList();
//我试过这个,但不起作用:
@列(name=“c1”,长度=10)
公共字符串getC1(){
返回列。get(0);
}
公共字符串集合c1(字符串c1){
添加(c1)列;
}
}
如何在此处进行注释以将列c1、c2、c3、c4映射到arraylist下面?Hibernate中没有此类功能,您需要将实体的各个字段映射到映射表中的相应列 看来我没有回答你的问题。。。但是有一项功能与您所请求的类似:
- 但是注释不支持它,只支持
映射xml
- 但它不是关于
——而是关于列表
非通用的地图
- (引述)
让我们总结一下文档:
您还可以映射类型为map的属性:
映射的语义与
相同。这种映射的优点是,只需编辑映射文档,就可以在部署时确定bean的实际属性。还可以使用DOM解析器对映射文档进行运行时操作。您还可以通过configuration对象访问和更改Hibernate的配置时间元模型
如文档中所述,通过这种方式,我们可以使用一些表示列的键字典和表示内容的值字典
也许,也可以勾选这个(NHibernate,但基本含义是相同的)
最后:我经常在业务用户驱动的其他领域使用此功能。这些确实需要一些元数据管理和udpated
xml
映射才能工作。没有别的了。更重要的是,因为这些是列(不是动态行),我们也可以按它们排序…如果您希望列在列表中。你必须手动操作。柴坦尼亚,如果你好奇的话,有一种解决办法。。。我将其描述为另一个答案。非常感谢Radim,我还将尝试此解决方案以了解其工作原理。当我有多个节点位于负载平衡器后面时,动态组件功能如何工作?我认为Hibernate不会负责更新所有节点上的元数据。那么,在使用此功能时,这可能是一个约束条件吗?
<dynamic-component name="userAttributes">
<property name="foo" column="FOO" type="string"/>
<property name="bar" column="BAR" type="integer"/>
<many-to-one name="baz" class="Baz" column="BAZ_ID"/>
</dynamic-component>