从表休眠中选择全部

Ham*_*lőd 8 hibernate

所以我有以下代码:

Query query = session.createQuery("from Weather");
        List<WeatherModel> list = query.list();
        WeatherModel w = (WeatherModel) list.get(0);
Run Code Online (Sandbox Code Playgroud)

我不想从表天气中获取所有项目,但我不断收到以下错误:(第23行是我创建查询的地方)

java.lang.NullPointerException
    at action.WeatherAction.validate(WeatherAction.java:23)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:251)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)............
Run Code Online (Sandbox Code Playgroud)

有什么问题?

PSR*_*PSR 10

Query query = session.createQuery("from Weather"); //You will get Weayher object
List<WeatherModel> list = query.list(); //You are accessing  as list<WeatherModel>
Run Code Online (Sandbox Code Playgroud)

它们都是不同的实体

Query query = session.createQuery("from Weather"); 

 List<Weather> list = query.list(); 

Weather w = (Weather) list.get(0);
Run Code Online (Sandbox Code Playgroud)

  • @coderz我可以推荐使用分页列表吗?`createQuery("from Weather").setFirstResult(firstResult).setMaxResults(maxResults).getResultList();` (2认同)

小智 5

在复杂的项目中,我不想在字符串文字中对实体名称进行硬编码:

Session session = sessionFactory.getCurrentSession();
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<WeatherModel> criteriaQuery = criteriaBuilder.createQuery(WeatherModel.class);
Root<WeatherModel> root = criteriaQuery.from(WeatherModel.class);
criteriaQuery.select(root);
Query<WeatherModel> query = session.createQuery(criteriaQuery);
List<WeatherModel> weatherModelList = query.getResultList();
Run Code Online (Sandbox Code Playgroud)


Ash*_*ral 0

天气将是与 WeatherModel 不同的实体。您的列表将包含 Weather 对象,只有当它是 WeatherModel 的子类型时才能进行转换