所以我有以下代码:
Query query = session.createQuery("from Weather");
List<WeatherModel> list = query.list();
WeatherModel w = (WeatherModel) list.get(0);
我不想从表天气中获取所有项目,但我不断收到以下错误:(第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)............
有什么问题?
答案 0 :(得分:10)
Query query = session.createQuery("from Weather"); //You will get Weayher object
List<WeatherModel> list = query.list(); //You are accessing as list<WeatherModel>
它们都是不同的实体
Query query = session.createQuery("from Weather");
List<Weather> list = query.list();
Weather w = (Weather) list.get(0);
答案 1 :(得分: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();
答案 2 :(得分:1)
我遇到了类似的问题,似乎已经通过提供您要查询的对象的完整路径来解决。所以,当我看起来像这样:session.createQuery(&#34;来自com.mystuff.something.or.other.MyEntity&#34;)它起作用了。
答案 3 :(得分:0)
天气将是与WeatherModel不同的实体。 您的列表将具有Weather对象,只有在它是WeatherModel的子类型
时才可以进行转换