我想知道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 = 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);
}
}
如何在此处注释以将列c1,c2,c3,c4映射到下面的arraylist?
答案 0 :(得分:2)
似乎我没有回答你的问题......但是...有一个像你要求的功能:
xml
映射List<>
- 而是 Map
非通用 首先,为什么只是xml?因为它是一个与类无关的动态组件,请参阅:
在Component类中,有一个名为dynamic的属性,它允许在xml配置中支持dynamic-component属性类型。注释目前不支持动态组件...
这引导我们谈论我们所说的:
<dynamic-component>
让我们总结一下doc:
您还可以映射Map:
类型的属性
<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>
<dynamic-component>
映射的语义与<component>
相同。这种映射的优点是只需通过编辑映射文档就可以在部署时确定bean的实际属性。使用DOM解析器也可以对映射文档进行运行时操作。您还可以通过Configuration对象访问和更改Hibernate的配置时元模型。
如文档中所述,这种方式我们可以使用一些表示内容的列和值的键字典。
也许,请检查这个(NHibernate,但基本含义相同)
最后:我正在使用此功能 - 用于其他字段 - 由业务用户驱动。这些确实需要一些元数据管理和udpated xml
映射才能工作。没有其他的。更重要的是,因为这些是列(不是动态行),我们也可以按它们排序......
答案 1 :(得分:0)
Hibernate中没有这样的功能,您需要将实体的各个字段映射到映射表中的相应列。