2016-04-27 5 views
0

このウィザードを使用して、データベースからエンティティクラスを作成しました。一部の表はクラスに変換されていませんが、リレーションシップを識別する属性があります。Netbeansウィザードデータベースのエンティティクラス(すべてのテーブルがマッピングされているわけではありません)

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

に感謝します。それは親クラスによって管理され、それはリストとして維持されます。

これは、多くの表に従うことを条件と教員詳細フォームの多くを削除学部

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

の対象を割り当て、多くの教員の詳細を持っているSubjectFacultyのテーブルと課題

に私の多くを管理するための私のコードです

@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