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

Java 使用jpa(MYSQL)创建一对多关系,java,mysql,jpa,Java,Mysql,Jpa,嗨,这是我的表结构,两个表角色和组件 +----------------+ | role | +----------------+ | role_id : PK | | role_name | | role_desc | +----------------+ | +----------------+ | component | +---------------

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

  +----------------+
    | 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类添加什么

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


提前感谢。

如果实体中不需要双向关系,只需将“组件”类中的“角色id”字段更改为类似以下内容:

@javax.persistence.ManyToOne
private role role;
 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
}
注意,在这种情况下,“角色”将拥有关系,“组件”将是反向的(非拥有的)“侧”

如果您还需要双向关系,则必须向“角色”类添加带有@javax.persistence.OneToMany anntoattion和指定“mappedBy”注释的字段

另外,还可以查看文档中关于该注释的其他漏洞,以获得更多的控制权。

类似以下内容:

@javax.persistence.ManyToOne
private role role;
 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
}
package com.example.rolessample;
@实体
公共类组件{
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE)
私有整数comp_id;
@许多酮
@JoinColumn(name=“role\u id”)
私人角色
私有字符串父组件;
私有字符视图;
私有字符添加_per;
私人字符编辑;
私用字符删除;
}
包com.example.rolessample;
@实体
公共阶级角色{
@身份证
@GenerValue(策略=GenerationType.SEQUENCE)
私有整数角色_id;
私有字符串角色名称;
私有字符串角色描述;
@OneToMany(mappedBy=“role\u c”)
私有列表组件
}