【发布时间】:2016-02-16 16:59:12
【问题描述】:
我有以下命名查询
@NamedQuery(name = "UserFlight.getUserFlightDetails",
query = "SELECT new com.foobar.UserFlightDetails(uf.flight.divertedAirport, uf.flight.number) " +
"FROM UserFlight uf WHERE uf.user.id=?1 AND uf.flight.id=?2")
UserFlightDetails构造函数如下
public UserFlightDetails(Airport airport, String flightNumber) {
this.setDivertedAirport(airport);
this.setFlightNumber(flightNumber);
}
divertedAirport是flight表中的外键,path=(uf.flight.divertedAirport)
我的问题是当divertedAirport 为空(它是一个可以为空的外键)时,我的 HQL 查询返回 null 作为结果(代码甚至没有触发上面的构造函数),所以我没有得到 flightNumber永远不会为空。
如果divertedAirport 不为空,我可以得到机场和航班号(并且上面的构造函数执行得很好)。
这可能是什么原因造成的,我该如何解决?我尝试了一些空函数,例如 nullif 和 coalesce,但没有任何帮助。
我使用的是 spring boot 1.2.7,hibernate-core 4.3.11.Final
【问题讨论】:
标签: spring hibernate hql spring-data jpql