考虑它有四个字段的实体(是的,它是不是一个有效的Java代码,只是为了演示):抓取完全的对象与Hibernate映射为本地查询
@Entity
Sale {
id, date, name, kind
}
我可以很容易地选择他与实体管理器实体如:
em.find(Sale.class, id)
但是如果我想作一个简单的查询,并填补了这一目标,我可以通过本地查询做简单对象:
em.createNativeQuery("SELECT s.id, s.date FROM sale s", Sale.class)
的问题是,因为有遗漏的领域,我越来越失踪列的错误:SQLException: Column name not found.
有没有办法告诉Hibernate忽略缺失列,使我们可以只获取我们所需要的列?
编辑:其中一个答案建议为每个缺失的列选择NULL
。问题是可能有大约40列,我当然不想将它们全部命名。
'em.selectNative究竟是什么(“s.id,s.date”,Sale.class)'?这不是JPA API,所以请使用JPA API重新格式化。这里的人不知道“你的API” –
你有这个类的构造函数只需要“id”和“date”? –
这只是一个简化,默认的构造函数是空的,Hibernate不是通过构造函数设置字段,而是通过字段上的反射来设置字段。我的观点是我想创建实体而不必从数据库读取整行。 –