我正在尝试使用hibernate映射这样的对象:
@Entity
public class ParentClass {
@Id
@GeneratedValue
int Id;
@OneToMany
Map<String, ChildClass> map;
}
@Entity
public class ChildClass {
@Id
@GeneratedValue
int Id;
String text;
}
我不希望Hibernate创建连接表。我希望它为ChildClass的表添加一列。我也不想在ChildClass中为密钥添加字段。理想情况下,在保存对象时,Hibernate会自动获取地图中的密钥并将其保存在相应的表中,并在查询时执行相反的操作。这可能吗?
如果我必须为ChildClass添加一个字段,那么hibernate可以使用地图中的密钥自动填充此字段吗?我问的原因是因为我从JSON Web服务获取数据并使用Jackson解析它而我不知道如何让Jackson将密钥复制到值对象中的字段。我可以手动编写代码,但我宁愿避免这样做。
答案 0 :(得分:0)
没有连接的单向关系:
@Entity
public class Customer implements Serializable {
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="CUST_ID")
public Set<Ticket> getTickets() {
...
}
@Entity
public class Ticket implements Serializable {
... //no bidir
}
没有连接的双向:
@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}
来自文档:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/
将这些样品应用到您的案例中。