来自数据库的 Netbeans 向导实体 类,并非所有表都已映射

Netbeans wizard Entity Classes from Database, not all tables mapped

我使用此向导从我的数据库创建实体 classes。有些 table 没有转化为 class,但是有一些属性可以识别关系。

this is my db ERD (mysql)

这是用户实体class(属性)

@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() {
    }
...

我有点不明白: OWN 连接 table 在哪里? 为什么我有 userList1 和 wheelchairList1?它应该识别自己的 table 吗?在这种情况下,我可以在此处重命名,还是必须在某些 xml 文件中重命名? 为什么

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

? 应该是一对一...

此外,“来自实体 class 的 JSF”向导创建 CRUD 操作来管理用户,我如何管理加入 table?我需要在控制器中写一些东西吗?

你能link给我一些我可以学习这个的资源吗?

非常感谢

在创建实体时,它会为所有 Table 主键创建 类 但不适用于具有多对多关系的 table。它由它们的父级管理 类 它作为列表维护。

这是我的代码,用于管理我的多对多 table 学科学院,其中包含教师和学科的详细信息

正在为教师分配科目

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

从多对多中删除主题和教师详细信息Table

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