在Spring Hibernate中映射SubClass

时间:2015-09-07 17:13:03

标签: java spring hibernate

我一直在尝试在我的新网络应用程序中执行登录过程,它曾经工作但是由于我创建了由UserData和Profile子类组成的User模型,Tomcat向我显示未映射的UserData:

var javaScriptExecutor = Instance as IJavaScriptExecutor;

bool isPageLoaded = javaScriptExecutor.ExecuteScript("return document.readyState;").Equals("complete");

Userlogin DAO:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: UserData is not mapped [from UserData u where u.username = :Username]

型号:

public UserData getUsername(String username) {
    List<UserData> userList = new ArrayList<UserData>();
    Query query = openSession().createQuery("from UserData u where u.username = :Username");
    query.setParameter("Username", username);
    userList = query.list();
    if (userList.size() > 0)
        return userList.get(0);
    else
        return null;
}

Full StackTrace:

public class Usermanager {


    @Entity
    @Table(name="USER") 
    public class UserData implements Serializable {

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        int iduser;
        String username;
        String password;
        int idprofile;
        int accountstatus;

        public int getIduser() {
            return iduser;
        }
        public void setIduser(int iduser) {
            this.iduser = iduser;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public int getIdprofile() {
            return idprofile;
        }
        public void setIdprofile(int idprofile) {
            this.idprofile = idprofile;
        }
        public int getAccountstatus() {
            return accountstatus;
        }
        public void setAccountstatus(int accountstatus) {
            this.accountstatus = accountstatus;
        }

    }

    @Entity
    @Table(name="PROFILE")
    public class Profile implements Serializable { ... }
}

1 个答案:

答案 0 :(得分:1)

你所做的不是子类,而是内部类。我不完全确定你打算在你自己的类之间建立什么关系,但 UserManager.java文件不应包含实体的定义。

  • 如果你想扩展UserManager(似乎不是一个好的解决方案,但仍然):你需要一个UserManager.java,以及你的实体的另外两个.java文件,都标记为&#34;扩展的UserManager&#34;并使用@Entity注释。

  • 如果您希望UserManager类包含这些元素,只需简单地使用这些类型取消两个变量,然后使用@Entity注释创建另外两个java类。