Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从SQLQuery结果中的id列获取Hibernate实体实例_Java_Sql_Hibernate - Fatal编程技术网

Java 从SQLQuery结果中的id列获取Hibernate实体实例

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

我有非休眠数据库表,其中包含休眠实体的ID。我可以使用createSQLQuery查询它们,它给我ID,然后我可以从中加载实体

我想一步完成,我想我可以用加法完成,但我不确定具体怎么做。Hibernate的文档网站已关闭。再一次当实体表的所有列都存在时,我可以使用addEntity,但我现在只有id

这导致缺少列:

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();