2013-05-16 2 views
1

Привет, это моя структура таблицы, две роли и компонент таблицы.создать отношение one to many с помощью jpa (MYSQL)

+----------------+ 
    | 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 | 
    +----------------+ 

Эти боб классы

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; 
} 

Что мне нужно добавить в мои классы фасоли?

Я посмотрел в этом примере, но я не уверен, как применить его к моему примеру.

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

Спасибо заранее.

ответ

1

Если вам не нужен двунаправленная связь в ваших сущностях - все, что вам нужно, чтобы изменить поле «ROLE_ID» в «компоненте» класс что-то вроде этого:

@javax.persistence.ManyToOne 
private role role; 

Обратите внимание, что в данном случае " роль "будет иметь отношение, а" компонент "будет обратным (не владеющим)" стороной ".

Если вам также необходимо двунаправленное отношение, вам нужно добавить поле, аннотированное с @ javax.persistence.OneToMany anntoattion с указанным «mappedBy» классом «role».

Также ознакомьтесь с документами о дополнительных слабых сторонах этих аннотаций, чтобы иметь больше контроля.

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 
}