Java 从SQLQuery结果中的id列获取Hibernate实体实例
我有非休眠数据库表,其中包含休眠实体的ID。我可以使用createSQLQuery查询它们,它给我ID,然后我可以从中加载实体 我想一步完成,我想我可以用加法完成,但我不确定具体怎么做。Hibernate的文档网站已关闭。再一次当实体表的所有列都存在时,我可以使用addEntity,但我现在只有id 这导致缺少列:Java 从SQLQuery结果中的id列获取Hibernate实体实例,java,sql,hibernate,Java,Sql,Hibernate,我有非休眠数据库表,其中包含休眠实体的ID。我可以使用createSQLQuery查询它们,它给我ID,然后我可以从中加载实体 我想一步完成,我想我可以用加法完成,但我不确定具体怎么做。Hibernate的文档网站已关闭。再一次当实体表的所有列都存在时,我可以使用addEntity,但我现在只有id 这导致缺少列: return (List<MyEntity>) session.createSQLQuery( "select entity_id from th
return (List<MyEntity>) session.createSQLQuery(
"select entity_id from the_table where foreign_key_value = ?")
.addEntity("entity_id", MyEntity.class)
.setLong(0, foreignKey).list();
我会用join
select *
from entity_table
where entity_id = (select entity_id
from non_hibernate_table
where id = ?)
甲骨文方言。如果您在将数据库列类型映射到java数据类型时遇到问题,可以手动将其设置为:.AddScalarIntergerFieldName,Hibernate.INTEGER
我想你想要的是:
session.createSQLQuery("select {entity.*} from entity_table {entity} where ....")
.addEntity("entity", Entity.class).(bind-parameters).list();
Hibernate将{entity.*}扩展为实体_表中的相关列
虽然如果您已经有了ID,您可以简单地使用session.load将其转换为实际实例,也可以使用惰性加载代理。可以做到这一点,但接下来我将做Hibernate的工作:-此外,这将跳过惰性加载和实体缓存。您曾经使用过这个吗?
session.createSQLQuery("select {entity.*} from entity_table {entity} where ....")
.addEntity("entity", Entity.class).(bind-parameters).list();