Hibernate映射没有连接表的映射

时间:2012-12-17 05:29:03

标签: java hibernate jpa

我正在尝试使用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将密钥复制到值对象中的字段。我可以手动编写代码,但我宁愿避免这样做。

1 个答案:

答案 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/
将这些样品应用到您的案例中。