Hibernate 本机查询:无效的列名错误 SQL-17006

2024-04-27

package com.abc.def.model;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Embeddable;
import javax.persistence.IdClass;
import java.util.Date;
import java.io.Serializable;



@NamedNativeQuery(name="getMetadata",query="
                  select a.name alias1,a.fullname alias2,
                         b.name alias3,b.age alias4,
                         c.height alias5,c.something alias6,
                         d.otherthing alias7
                  from lame_table_name a,
                       lame_table_name_2 b
                  where a.id = b.id
                     and b.id = c.id 
                     and c.id = d.id 
                     and d.id = :namedparameter
                  order by a.index,b.index
               ",
            resultClass=MetadataModel.class)


  @Entity
  @IdClass(SomeIdClass.class)

  public class MetadataModel{

  @Id @Column("alias1")
  private Type alias1property;

  @Id @Column("alias2")
  private Type2 alias2property;

  @Column("alias3")
  private Type3 alias3property;

  //getters and setters
  }

  @Embeddable
  class SomeIdClass implements Serializable{

  //serialVersionUID line

  @Id @Column("alias1")
  private Type alias1property;

  @Id @Column("alias2")
  private Type2 alias2property;

  //getter and setters
  }

错误是 SQL-17006,无效的列名,一整天都在尝试此设置的变体 我应该尝试放置 Column("lame_table_name.name")

我还尝试使用SqlResultSetMapping(并从POJO的字段中删除@Column)(并在SqlResultSetMapping的columns属性中指定所有列别名)(我们是否应该在通过SQLQuery接口的setResultSetMapping方法执行查询时再次指定结果集映射?)

package com.abc.def.model;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Embeddable;
import javax.persistence.IdClass;
import java.util.Date;
import java.io.Serializable;
//other imports for the SqlResultSetMapping



@NamedNativeQuery(name="getMetadata",query="
                  select a.name alias1,a.fullname alias2,
                         b.name alias3,b.age alias4,
                         c.height alias5,c.something alias6,
                         d.otherthing alias7
                  from lame_table_name a,
                       lame_table_name_2 b
                  where a.id = b.id
                     and b.id = c.id 
                     and c.id = d.id 
                     and d.id = :namedparameter
                  order by a.index,b.index
               ",
            resultSetMapping="metaDataMapping")


@SqlResultSetMapping(name="metaDataMapping",
              entities=@EntityResult(entityClass=MetadataModel.class,
                fields = {@FieldResult(name="alias1Property",column="alias1")
                           //so on
                      }

                 )
            )

  @Entity
  @IdClass(SomeIdClass.class)

  public class MetadataModel{


  private Type alias1property;


  private Type2 alias2property;


  private Type3 alias3property;

  //getters and setters
  }

  //composite class, exactly as above

我们应该将所有表列都包含在 oracle 的选择列表中。 如果我们只保留几列。 例如, 您的表 Employee 有列 FirstName、LastName、EmpId, 如果您有类似的查询。

session.createSQLQuery("Select FirstName from Employee");

上面的查询将不起作用。它将抛出无效列错误异常。 因此,最好将所有列放在 Oracle 的 Select 子句中。

礼貌 :一个答案 https://stackoverflow.com/questions/17321547/native-sql-throwing-invalid-column-name-exception?answertab=votes#tab-top谢谢, 拉杰什。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 本机查询:无效的列名错误 SQL-17006 的相关文章

随机推荐

  • android可以在本机模式下从sd卡加载dll吗

    我想把我写的程序移植到android上 该程序是在 Windows 和 Linux 上用 C 编写的 该程序使用 dll 作为插件架构 通过下载程序从特定文件夹加载的 dll 可以将新插件添加到程序中 我的问题是 是否可以将为 androi
  • VS Code:ModuleNotFoundError:没有名为“pandas”的模块

    尝试导入pandas在 VS 代码中 import pandas and got Traceback most recent call last File c Users xxxx hello sqltest py line 2 in
  • jQuery text() 的替代方案包括元素之间的空格?

    我在容器中有一些任意的正文文本 我不控制它 所以我不知道它的结构 但像这样的事情 div h1 Heading h1 p A paragraph or two p ul li item 1 li li item 2 li ul div 这只
  • 如何在 JavaScript 中访问自定义 html 属性?

    您好 我在这个 html 文档中遇到问题 请帮助我 我对此很陌生 也许我很愚蠢 错过了一些东西 我在这里只放了有用的来源来解决请 a Hurray a br 我希望它显示
  • 访谈:函数指针与 switch case

    在面试期间 我被要求为具有 100 个状态的系统实现一个状态机 其中每个状态又具有 100 个事件 我回答了以下 3 种方法 if else 开关盒 函数指针 if else 显然不适合这样的状态机 因此主要比较是 switch case
  • Visual Studio 2017命令行提示符

    我无法从 Windows 10 中的命令行提示符运行 cl Microsoft Visual Studio C 编译器 我使用的是新的 Windows 10 安装和新的 Microsoft Visual Studio 2017 社区版 我收
  • Python 的类表示魔法方法?

    我有一个自定义类 例如 class foo object def init self name self name name def get name self return self name 我想做的是写 test foo test p
  • 无法使用 CSS 设置文本区域宽度

    我尝试使用此 CSS 来设置表单元素的宽度 input type text textarea width 250px 如果您查看此 Firefox 屏幕截图 您会发现字段的宽度不同 我在 Safari 中也得到了类似的效果 替代文本 htt
  • 使用 C# 读取数百万个小文件

    我有数百万个每天生成的日志文件 我需要读取所有这些文件并将其放在一起作为单个文件 以便在其他应用程序中对其进行一些处理 我正在寻找最快的方法来做到这一点 目前我正在使用线程 任务和并行 如下所示 Parallel For 0 files L
  • Ruby 脚本即服务

    嗯 标题说明了一切 我有一个 ruby 脚本 我想在我的 Linux 机器上作为一项服务 我可以启动和停止 运行 我找到了如何在 Windows 上执行此操作here https stackoverflow com questions 16
  • Dialogflow 不记名令牌分析

    如何获取 Dialogflow v2beta1 API 调用的不记名令牌 我想集成 Dialogflow API 所以现在我什至无法在没有不记名令牌的情况下在邮递员中测试 API 为了进行测试 我在 GCP 项目中为我的代理生成了 API
  • 打开页面时出现问题(许可协议页面)

    我很困扰 如何在使用应用程序时仅显示一次协议页面 我不知道如何解释这一点 但我正在尝试解释这一点 我正在创建一个应用程序 其中有协议页面 其中有两个按钮 1 按钮名称为Accept 2 按钮名称为拒绝 如果用户单击接受按钮应用程序进入下一页
  • DDMS 显示在线模拟器的空文件资源管理器

    我很多天都面临这个问题 我搜索了很多但没有找到任何方便的答案 每当我启动模拟器时 一段时间后 当我看到 DDMS 时 它会显示模拟器在线 但其文件资源管理器什么也不显示 当我再次重新启动模拟器或重新启动 Eclipse 时 它 会再次可见
  • 有完整的 tomcat 角色列表吗?

    我希望能够完全访问和控制 tomcat 以使我的开发生活变得简单 我知道角色 admin 和 manager 并且知道还有一些带有连字符的角色 例如 manager gui 但在哪里可以找到包含可用角色描述的完整列表 我什至无法在文档中找到
  • 使用 Python 从 PDF 中的物理坐标返回文本字符串

    在过去的几个小时里 我一直在与 Google 和 PDFMiner 的有限文档作斗争 虽然我感觉很接近 但我只是没有得到我需要的东西 我已经经历过http www unixuser org euske python pdfminer htt
  • 简单的 XML 加载文件不起作用

    为什么这不起作用 url http query yahooapis com v1 public yql q select 20 20from 20html 20where 20xpath 3D 22 2F 2Fmeta 22 20and 2
  • Docker nuget连接超时

    尝试利用官方jetbrains teamcity agentKubernetes 上的图像 我已经设法在 Docker 中运行 Docker 但尝试使用以下命令构建 ASP NET Core 映像docker build命令失败于dotne
  • SetLocale 无法在 jsp 站点中以德语格式化货币

    我对 jstl 标签库感到困惑 我想将数字格式化为德国风格的货币 但我尝试的一切都不起作用 我找到了以下示例 但输出是相同的
  • 如何根据 angular.js 中的子复选框选择父复选框?

    我最近一直在使用 Angular js 并决定在选中父复选框后检查所有复选框 我已经使用了ng model and ng checked指令 div div div div
  • Hibernate 本机查询:无效的列名错误 SQL-17006

    package com abc def model import javax persistence Column import javax persistence Id import javax persistence Entity im