我有以下类结构:
public class Container {
private Set<Child> childs = new HashSet<>();
}
public class Child {
String name;
String value;
String param;
}
由于Container类在应用程序中将是单一的(只是可以更新的集合的包装),我想将它存储在单个表中,例如带有列的“childs”
id | name | value | param
是否可以进行此类映射,以便在获取时使用Container 通过hb会话存储它,并对childs集合进行相应的更新:
getSession().saveOrUpdate(container)
如果是这样,在这种情况下应该进行哪种映射?
UPD:我将有2个类映射到单个表
答案 0 :(得分:0)
我不确定getSession()。saveOrUpdate(容器),但是你的问题映射看起来应该是这样的。
@Entity
public class Container {
@ManyToOne
private Set<Child> childs = new HashSet<>();
}
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
String value;
String param;
}
答案 1 :(得分:0)
经过一番研究后,我得到了这样的解决方案:
@Entity
@Table(name = "childs")
public class Container {
@Id
//optional your id strategy
@GeneratedValue(strategy = GenerationType.AUTO, generator = "xyz")
Long id;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name="childs", joinColumns=@JoinColumn(name="id"))
private Set<Child> childs = new HashSet<>();
}
@Embeddable
public class Child {
String name;
String value;
String param;
}
表格结构 - childs(id, name, value, param)