“SELECT *”进入一个hibernate实体,无需填充任何关系/连接表数据

时间:2014-09-30 08:38:12

标签: java hibernate-4.x

我希望通过运行类似select * from <table> where id = ?的内容将数据加载到hibernate实体中。我只对<table> - no 加入的数据感兴趣。

我可以通过以下方式实现这一目标:

T result = (T) getSession()
            .createSQLQuery("SELECT * FROM " + tableName + " WHERE " + idColumn + " = ?")
            .setInteger(0, id)
            .setResultTransformer(new AliasToBeanResultTransformer(type))
            .uniqueResult();

但这仅适用于没有关系的实体。对于与另一个实体有关系的任何实体,当结果转换器尝试在我的实体上设置一些PropertyNotFoundException属性时,我得到<relationshipName>_id(例如org.hibernate.PropertyNotFoundException: Could not find setter for administration_id on class com.xxxxxx.xxxx.model.AdministrationPIN

是否有其他变形金刚可以自动处理此问题。或者,如果我要使用Criteria.ALIAS_TO_ENTITY_MAP结果转换器,可能会从实体映射中使用某种对象绑定器?

更新 非常重要的是,将表中的所有数据加载到实体中,包括关系数据。因此,如果实体A具有包含实体B的OneToOne,并且我使用此方法加载实体A,则a.getB()应返回B的实例,但是B实例应填充其标识符。

0 个答案:

没有答案