我正在将ETL过程从工具转换为Java批处理API应用程序.在这个ETL过程中.在当前版本(使用该工具)中,我们有许多连接不同表的sql语句,以便生成所需的输出.现在可以转换为Java,JPA.
我想使用本机查询.这样会很好,因为它不需要为查询中使用的每个表创建实体,我可以使用POJO来查询结果(我也不需要重写查询).阅读this answer我知道我可以使用@sqlResultSetMapping.问题是我的项目中没有任何实体,所以我不知道在哪里放这个注释.我可以在任何地方放置这个注释,以便实体经理找到它吗?
PS:在我的概念证明中,我目前正手动从一组对象转换为POJO,但我真的不喜欢这种方法.
将@Entity注释添加到POJO将导致我的应用程序无法启动:
Caused by: org.hibernate.HibernateException: Missing table: MyTable
我不确定(现在正在搜索它),但我认为它可能是由我的persistence.xml中的这个属性引起的
最佳答案
其实我找到了answer I was looking for:
原文链接:https://www.f2er.com/mysql/433809.html我可以在orm.xml中使用XML定义@ sqlResultSetMapping的行为,所以这个定义:
@sqlResultSetMapping(
name = "BookValueMapping",classes = @ConstructorResult(
targetClass = BookValue.class,columns = {
@ColumnResult(name = "id",type = Long.class),@ColumnResult(name = "title"),@ColumnResult(name = "version",@ColumnResult(name = "authorName")}))
将在XML中定义如下:
<sql-result-set-mapping name="BookValueMappingXml">
sql-result-set-mapping>
允许我在不需要实体的情况下定义它.