2017-06-15 90 views
-1

我已經搜索了很長時間的這個問題,但答案沒有幫助。org.hibernate.hql.ast.QuerySyntaxException:ts_user未映射[來自ts_user]

結果是一樣的,也許原因是不同的。

該模型通過使用表註釋與數據庫關聯。

模型如下:

@Entity 
 
@Table(name = "ts_user") 
 
public class User { 
 

 
    @Id 
 
    @Column(name = "id") 
 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
 
    private int id; 
 

 
    private String phone; 
 

 
    public int getId() { 
 
     return id; 
 
    } 
 

 
    public void setId(int id) { 
 
     this.id = id; 
 
    } 
 

 
    public String getPhone() { 
 
     return phone; 
 
    } 
 

 
    public void setPhone(String phone) { 
 
     this.phone = phone; 
 
    } 
 

 
    @Override 
 
    public String toString() { 
 
     return "User{" + 
 
       "id=" + id + 
 
       ", phone='" + phone + '\'' + 
 
       '}'; 
 
    } 
 
}

的DAO如下:

@Repository 
 
public class HibernateUserDAO implements UserDAO { 
 

 
    private SessionFactory sessionFactory; 
 

 
    @Autowired 
 
    public HibernateUserDAO(SessionFactory sessionFactory) { 
 
     this.sessionFactory = sessionFactory; 
 
    } 
 

 
    private Session currentSession() { 
 
     return sessionFactory.getCurrentSession(); 
 
    } 
 

 
    @SuppressWarnings("unchecked") 
 
    @Override 
 
    public List<User> list() { 
 
     Session session = this.sessionFactory.openSession(); 
 
     List<User> users = session.createQuery("from ts_user").list(); 
 
     session.close(); 
 
     return users; 
 
    } 
 
}

XML如下:

回答

0

您在此處使用的是表名而不是entityName。這裏應該使用實體名稱,即類的名稱。

@Override 
public List<User> list() { 
    Session session = this.sessionFactory.openSession(); 
    List<User> users = session.createQuery("select u from User u").list(); 
    session.close(); 
    return users; 
}