2016-04-27 50 views
0

我使用此向导从我的数据库创建实体类。有些表格尚未转换为类别,但有些属性可识别关系。Netbeans wizard来自数据库的实体类,并非所有表映射

this is my db ERD(MySQL的)

,这是用户的实体类(属性)

@Entity 
@Table(name = "user") 
@XmlRootElement 
@NamedQueries({ 
    @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"), 
    @NamedQuery(name = "User.findByOid", query = "SELECT u FROM User u WHERE u.oid = :oid"), 
    @NamedQuery(name = "User.findByUsername", query = "SELECT u FROM User u WHERE u.username = :username"), 
    @NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password"), 
    @NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email"), 
    @NamedQuery(name = "User.findByAddress", query = "SELECT u FROM User u WHERE u.address = :address"), 
    @NamedQuery(name = "User.findBySince", query = "SELECT u FROM User u WHERE u.since = :since")}) 
public class User implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "oid") 
    private Integer oid; 
    @Basic(optional = false) 
    @NotNull 
    @Size(min = 1, max = 15) 
    @Column(name = "username") 
    private String username; 
    @Basic(optional = false) 
    @NotNull 
    @Size(min = 1, max = 15) 
    @Column(name = "password") 
    private String password; 
    // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation 
    @Basic(optional = false) 
    @NotNull 
    @Size(min = 1, max = 30) 
    @Column(name = "email") 
    private String email; 
    @Size(max = 50) 
    @Column(name = "address") 
    private String address; 
    @Basic(optional = false) 
    @NotNull 
    @Column(name = "since") 
    @Temporal(TemporalType.DATE) 
    private Date since; 
    @JoinTable(name = "favorite", joinColumns = { 
     @JoinColumn(name = "user_oid", referencedColumnName = "oid")}, inverseJoinColumns = { 
     @JoinColumn(name = "wheelchair_oid", referencedColumnName = "oid")}) 
    @ManyToMany 
    private List<Wheelchair> wheelchairList; 
    @ManyToMany(mappedBy = "userList1") 
    private List<Wheelchair> wheelchairList1; 
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "senderOid") 
    private List<Comment> commentList; 
    @JoinColumn(name = "role_oid", referencedColumnName = "oid") 
    @ManyToOne(optional = false) 
    private Role roleOid; 
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "userOid") 
    private List<Orthopedy> orthopedyList; 

    public User() { 
    } 
... 

我不明白的东西: 其中自己的连接表? 为什么我有userList1和wheelchairList1?它应该识别OWN表吗?在这种情况下,我可以在这里重命名它,或者我必须在某个xml文件中重命名它? 为什么

@OneToMany(cascade = CascadeType.ALL, mappedBy = "userOid") 
    private List<Orthopedy> orthopedyList; 

? 它应该是OneToOne ...

此外,“从实体类的JSF”向导创建CRUD操作来管理用户,我如何管理连接表?我需要在控制器中写些什么?

请问我可以把一些资源链接到我可以学习的地方吗?

太感谢你了

回答

1

在创建它的实体创建一个类的所有表将主键为 但不适合有多对多的关系表。它由父类管理,它被维护为一个列表。

这是我管理我的多对多表SubjectFaculty的具有教师的细节和主题

分配对象对教师

public void assignFacultyToSubject(String facultyUname, Integer subjectId) { 
    try { 
     Subject oSubject = em.find(Subject.class, subjectId); 
     Faculty oFaculty = em.find(Faculty.class, facultyUname); 

     College oCollege = em.find(College.class, oFaculty.getCollegeUname().getCollegeUname()); 

     List<Faculty> lstFaculty = oSubject.getFacultyList(); 
     List<Subject> lstSubject = oFaculty.getSubjectList(); 

     if (!lstSubject.contains(oSubject)) { 
      lstFaculty.add(oFaculty); 
      lstSubject.add(oSubject); 

      oSubject.setFacultyList(lstFaculty); 
      oFaculty.setSubjectList(lstSubject); 
      em.merge(oSubject); 
      em.getEntityManagerFactory().getCache().evictAll(); 
     } else { 
      System.out.println("Entry Already Found"); 
     } 


    } catch (Exception e) { 
     System.out.println("Error :- " + e.getMessage()); 
    } 
} 

删除主题和教师资料表格多对多表代码

@Override 
public void removeFacultySubject(String facultyUname, Integer subjectId) { 
    try { 
     Subject oSubject = em.find(Subject.class, subjectId); 
     Faculty oFaculty = em.find(Faculty.class, facultyUname); 

     List<Subject> lstSubject = oFaculty.getSubjectList(); 
     List<Faculty> lsFaculty = oSubject.getFacultyList(); 

     lstSubject.remove(oSubject); 
     lsFaculty.remove(oFaculty); 

     em.merge(oSubject); 
    } catch (Exception e) { 
     System.out.println("Error :- " + e.getMessage()); 
    } 
} 
+0

谢谢你,这段代码会在会话bean中正确吗? – Marco

+0

@Marco我在无状态的本地会话bean中做了它 – 3gth

+0

我的OWN表呢?你知道吗? – Marco

相关问题