Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
JPA/Hibernate在联接时选择列子集_Hibernate_Jpa_Join_Mapping - Fatal编程技术网

JPA/Hibernate在联接时选择列子集

JPA/Hibernate在联接时选择列子集,hibernate,jpa,join,mapping,Hibernate,Jpa,Join,Mapping,在SQL中,很容易进行联接,只从联接表返回所需的列。在JPA/Hibernate中映射这一点的最佳方法是什么 例如,有一个文件夹实体映射到EMAIL_文件夹,还有一个EMAIL实体映射到EMAIL表。从文件夹到电子邮件之间存在一对多关系。电子邮件实体相当重,因为它包含文本、附件等的CLOB。在某些情况下,我们需要取回整个电子邮件,而在其他情况下,我们只想取回发件人姓名、主题和发送日期,而不希望带来CLOB数据的内存开销。在SQL中实现这一点很简单,但我不确定在JPA/Hibernate中最好的方

在SQL中,很容易进行联接,只从联接表返回所需的列。在JPA/Hibernate中映射这一点的最佳方法是什么

例如,有一个文件夹实体映射到EMAIL_文件夹,还有一个EMAIL实体映射到EMAIL表。从文件夹到电子邮件之间存在一对多关系。电子邮件实体相当重,因为它包含文本、附件等的CLOB。在某些情况下,我们需要取回整个电子邮件,而在其他情况下,我们只想取回发件人姓名、主题和发送日期,而不希望带来CLOB数据的内存开销。在SQL中实现这一点很简单,但我不确定在JPA/Hibernate中最好的方法是什么

我正在考虑创建一个只映射到senderName、subject和sentDate的LightEmail。这是处理这种事情的最好方法吗

更新:在这一点上,我希望尽可能避免字节码插装。

将属性(CLOB)注释为
@Basic(fetch=FetchType.LAZY)

请参阅Hibernate参考资料中的文档“惰性属性加载需要构建时字节码插装!如果您的持久性类没有得到增强,Hibernate将默默地忽略惰性属性设置并返回到立即获取。”然后它继续说“不同的(更好的?)避免不必要的列读取的方法,至少对于只读事务,是使用HQL或Criteria查询的投影功能。这避免了构建时字节码处理的需要,当然是首选解决方案。”