本机 SQL(用 xml 编写)结果集映射到 POJO(基于注释)

Posted

技术标签:

【中文标题】本机 SQL(用 xml 编写)结果集映射到 POJO(基于注释)【英文标题】:Native SQL(written in xml) result set mapping to POJO(annotation based) 【发布时间】:2018-06-26 07:11:22 【问题描述】:

我正在开发一个 Spring MVC 遗留项目,目前,我们正在将 spring(2) 和 hibernate(2) 升级到最新版本。以前在项目中有 sql-query 和实体映射在 XML 文件中完成,我们正在将实体映射从 XML 升级到基于 annotation。基于查询结果集完成的实体映射会出现问题。我只想将查询保留在 XML 文件中(因为这些是在 4-5 个表上执行连接的非常非常大的查询),并且只需更改实体映射。以前实体映射是这样完成的

<class name="ClassName" table="x" mutable="false">
    <id name="id" column="id_col">
        <generator class="assigned" />
    </id>
        <property name="linkId"  ....

</class>

如何在基于注解的映射中注解table='x'

P.S table="x" 不是示例,它仅在 XML 映射中以这种方式编写,并且 DB 中没有名为 x 的表

【问题讨论】:

呃……@Table? 不,没那么容易 您能否尝试添加更多上下文,因为目前还不是很清楚问题所在。映射实体时遇到什么麻烦? 它在运行时给了我空指针异常 抱歉,没有足够的信息来使用给定的信息修复 NPE 【参考方案1】:

你可以这样使用

@Entity
@Table(name = "X")
public class ClassName 

在原生查询中在 xml 中

<sql-query name="findQuery">
   <return alias="ClassName" class="ClassName"/>
   select * from x
</sql-query>

【讨论】:

以上是关于本机 SQL(用 xml 编写)结果集映射到 POJO(基于注释)的主要内容,如果未能解决你的问题,请参考以下文章

如何将本机查询的结果集映射到实体中的变量

Mapper映射文件

学习017 Mybatis框架

Hibernate:使用@SqlResultSetMapping 映射本机查询的结果集

Mybatis原理图

ssm mapper.xml讲解