Hibernate视图映射

时间:2017-06-09 09:37:39

标签: java hibernate view orm mapping

我上了两节课。名为person的类和名为group的类。现在我创建了一个链接这些类的视图,并使用 @Immutual 注释创建了一个类。

查看结果

| person_id | group_id |
| ----------|----------|
|     1     |     2    |
|     2     |     2    |
|     3     |     4    |
|    ...    |    ...   |

Class PersonGroup

@Entity
@Table(name = "person_group")
@Immutable
public class PersonGroup {

    @Id
    @Column
    private Person person;

    @Column
    private Group group;

    public Person getPerson() {
        return this.person;
    }

    public Group getGroup() {
        return this.group;
    }
}

现在我想将 PersonGroup 映射到 Person Group 。像这样:

班级人员

@Entity
public class Person {

    ...

    private PersonGroup group;

    ...

}

班级小组

@Entity
public class Group {

    ...

    private Set<PersonGroup> person;

    ...

}

这可能吗?如果是,我应该使用哪些注释?我尝试了很多,没有什么对我有用。

此致 XY

1 个答案:

答案 0 :(得分:1)

  1. 如果您想在PersonGroup模型中使用Person,则必须使用@Embeddable注释将值类型对象嵌入到我们的Entity类中。 像这样: -

    @Entity
    @Embeddable
    @Table(name = "person_group")
    @Immutable
    public class PersonGroup {
    .....
    

    然后将@Embedded添加到Person类。 像这样: -

    @Entity
    public class Person {
    
        ...
        @Embedded
        private PersonGroup group;
    
  2. 如果您想在PersonGroup模型中使用Group模型,请使用@ElementCollection Annotationin Group Class,如下所示

    @Entity
    public class Person {
    
        ...
        @ElementCollection
        private Set<PersonGroup> person;
    
  3. 请参阅以下教程。

    Doc1Doc2