[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常

Posted 岚罗青呱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常相关的知识,希望对你有一定的参考价值。

假设当前表结构如下:

  food表字段有foodid,name,外键businessid,外键type

  business表字段有,name,外键type

  type表字段有id,name,foodid

 

Hibernate生成的对应POJO分别是Food,Business,Type

 

需要查询food表部分字段,如name和外键businessid

  则可在Food类中添加只有相应成员变量的构造方法,Food(String name,Business business)

使用hql语句 

select new Food(name,business) from Food where foodid=1

 

 

以上可以顺利查询,但是如果调换name和顺序

使用Food(Business business,String name)

hql语句 

select new Food(business, name) from Food where foodid=1

就会报空指针异常

 

这其实是因为外键的关联表Business中也含有叫name的字段,所以会发生错误,此时只要给查询表使用别名就可以解决了.

正确的语句:

select new Food(f.business, f.name) from Food f where foodid=1

 

同理,如果也查询外键type, 那么:

错误的语句:

select new Food(name,business,type) from Food where foodid=1

 

正确的语句:

select new Food(f.name,f.business,f.type) from Food f where f.foodid=1

 

  

以上是关于[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate查询带有ID的外键字段

ORM的查询

创建表操作(含外键关联)

Hibernate查询部分字段并封装到指定类中

hibernate-部分字段查询方案

Hibernate高效查询,只查询部分/指定字段