容器实体内部的Hibernate映射集合

时间:2018-02-02 10:46:35

标签: java hibernate hibernate-mapping

我有以下类结构:

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个类映射到单个表

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)