我正在學習 Hibernate,并且在使用 hql 時遇到了困難。我希望我的函數檢查數據庫中是否存在用戶名。private boolean userExists(Session session, String userName) { String hql = "select 1 from entity.User u where u.userName = :userName"; Query query = session.createQuery(hql); query.setParameter("userName", userName); return query.uniqueResult() != null; }上面的函數位于我的 UserControl 類中。這是我在 IntelliJ 中的項目布局:在我的 UserControl 類中,我已經導入了我的 User 類import entity.User,但我仍然不能User在 HQL 中使用裸類名而不是entity.User沒有得到以下錯誤。java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [select 1 from User u where u.userName = :userName]我對類似問題的搜索讓我找到了這個答案和頁面上的其他人,這表明我的實體類的命名存在一些錯誤,盡管我基于答案的實驗沒有奏效。entity.User如果我像上面那樣屈服并使用,那么我會收到此錯誤:java.lang.IllegalArgumentException: Could not locate named parameter [userName], expecting one of []這是我的實體類:package entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "user_association", schema = "login_register_view")public class User { private int id; private String userName; private String password; private String color; private Integer pocketCount; private Double weight; @Id @Column(name= "id", nullable = false) public int getId(){ return id; } public void setId(int id){ this.id = id;} @Column(name = "user_name") public String getUserName(){ return userName; } public void setUserName(String userName){ this.userName = userName; } @Column(name = "password") public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } @Column(name = "color") public String getColor(){ return color; } public void setColor(String color){ this.color = color; } @Column(name = "pocket_count") public Integer getPocketCount(){ return pocketCount; } public void setPocketCount(Integer pocketCount){ this.pocketCount = pocketCount; }}
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
我發現發生這種情況的原因是因為我沒有在我的 hibernate.cfg.xml 中映射實體。在里面<session-factory> </session-factory>
我需要寫:
<mapping class="entity.User"/>
添加回答
舉報
0/150
提交
取消