java - 在没有实体的文件中休眠本机查询
问题描述
我的第一选择@NamedNativeQueries
是在文件中定义了数据传输对象(一个 POJO,如果我使用它们,可能是一条记录)。但是 DTO 不是实体,因此 Hibernate 不会查看文件并且找不到查询。[如果您想知道,我在 a 中使用@ConstructorResult
a@QueryResultSetMapping
来创建对象。] 我可以用 an 将它们放在不同的文件中,@Entity
但语义是错误的。
有没有什么神奇的方法可以让 Hibernate 查看它否则会忽略的文件?
解决方案
您可以向会话工厂添加额外的映射资源。
以 Spring Boot 为例:
spring.jpa.mapping-resources=hibernate/MyMapping.hbm.xml,hibernate/MyMapping2.hbm.xml
或没有 Spring Boot(来自https://mkyong.com/hibernate/how-to-add-hibernate-xml-mapping-file-hbm-xml-programmatically/):
SessionFactory sessionFactory = new Configuration()
.addResource("hibernate/MyMapping.hbm.xml")
.buildSessionFactory();
然后在添加的文件(例如hibernate/MyMapping.hbm.xml
)中,您可以插入您的命名查询:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<sql-query name="test">
select count(*) from SYSIBM.SYSDUMMY1
</sql-query>
</hibernate-mapping>
推荐阅读
- jquery - 如何解决此 Jquery 页面刷新错误
- r - onehot 编码:保留列结构
- python - Python tkinter:在列表框中添加垂直和水平滚动条
- c++ - C++ 数组函数
- javascript - 如何在Javascript中将数组映射到对象?
- javascript - 一个 div 的复选框输入影响另一个 div 的复选框输入
- html - 数据包含 Dropdownbox 上的空间
- angular - 验证是否在 Angular2 中选中了输入复选框
- javascript - 警报显示 [object Object]?
- javascript - 如何从两个值动态绘制引导进度条