我有两个命名查询,并且都有相同的逻辑,除了每个都使用不同的对象构造函数将结果选择到
命名查询 1:
SELECT DISTINCT NEW dk.NewsRoomView(n,p)
FROM NewsItem n LEFT JOIN n.placements p JOIN n.actors a
命名查询 2:
SELECT DISTINCT NEW dk.NewsRoomView(n.id,n.title,SIZE(n.attachments),p.id,p.page)
FROM NewsItem n LEFT JOIN n.placements p JOIN n.actors a
NewsRoomView 类的结构
public class NewsRoomView{
public NewsRoomView(NewsItem n, NewsItemPlacement p)
Logger.getLogger(NewsRoomView.class.getName()).log(Level.INFO,"at Contsructor 1");
}
public NewsRoomView(Long id, String title, Integer attachments, Long pId, Integer page){
Logger.getLogger(NewsRoomView.class.getName()).log(Level.INFO,"at Contsructor 2");
}
}
现在,每当执行命名查询 1 时,它都会成功打印“at constructor 1”语句,因此查询会返回结果,但是当执行命名查询 2 时,它既不会打印出语句“at Constructor 2”,也不会返回结果。
上面的代码块只是我真正拥有的片段。实际上,第二个构造函数有一个 23 长的参数列表,它表示 NewsItem 和 NewsItemPlacement 实体中的更多字段。
我想知道阻止第二个构造函数返回结果的可能是什么错误,以及构造函数的参数列表的大小是否有限制。
提前致谢。