1

我正在尝试使用休眠来映射这样的对象:

@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 添加一个字段作为键,休眠可以使用地图中的键自动填充此字段吗?我问的原因是因为我从 JSON Web 服务获取数据并使用 Jackson 解析它,我不知道有一种方法可以让 Jackson 将键复制到值对象中的字段。我可以编写代码手动执行此操作,但我宁愿避免这样做。

4

1 回答 1

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/ 将这些示例应用于您的案例。

于 2012-12-17T06:47:48.927 回答