使用jpa(MYSQL)创建一对多关系

时间:2013-05-16 06:54:38

标签: java mysql jpa

嗨这是我的表结构两个表的角色和组件。

  +----------------+
    | role           |
    +----------------+
    | role_id : PK |
    | role_name    |
    | role_desc    |
    +----------------+
          |
    +----------------+
    | component      |
    +----------------+
    | comp_id : PK |
    | role_id : FK |
    | parent_comp  |
    | view_per     |
    | add_per      |
    | edit_per     |
    | delete_per   |
    +----------------+

这些是bean类

   package com.example.rolessample;

    public class component {
        private String comp_id;
        private String role_id;
        private String parent_comp;
        private char view_per;
        private char add_per;
        private char edit_per;
        private char delete_per;
    }
package com.example.rolessample;

public class role {

    private String role_id;
    private String role_name;
    private String role_desc;
}

我需要添加到我的bean类中吗?

我看过这个例子,但我不知道如何将它应用到我的例子中。

How do you to create a one to many relationship in JPA with no JoinTables?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您的实体中不需要双向关系 - 您只需将“component”类中的“role_id”字段更改为以下内容:

@javax.persistence.ManyToOne
private role role;

请注意,在这种情况下,“role”将拥有关系,“component”将是反向(非拥有)“side”。

如果您还需要双向关系,则必须添加带有@javax.persistence.OneToMany anntoattion的字段,并将指定的“mappedBy”添加到“role”类。

另外,请查看有关该注释的其他弱点的文档以获得更多控制权。

答案 1 :(得分:1)

这样的事情:

 package com.example.rolessample;
    @Entity
    public class component {
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private Integer comp_id;
        @ManyToOne
        @JoinColumn(name="role_id")
        private role role_c
        private String parent_comp;
        private char view_per;
        private char add_per;
        private char edit_per;
        private char delete_per;
    }

package com.example.rolessample;
@Entity
public class role {
    @Id
    @GenerValue(strategy = GenerationType.SEQUENCE)
    private Integer role_id;
    private String role_name;
    private String role_desc;
    @OneToMany (mappedBy = "role_c")
    private List <component> component_r
}
相关问题