Java MyBatis在mapper中调用自定义函数以获取安全信息接收错误Oracle ORA-00904

xxhby3vn  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(62)

我有一个函数secureUser. collection. getExampleId。这个函数返回一个给定keyId的Example Id。我试图在MyBatisMap器中调用这个函数。

<mapper namespace="core.namespace.dao.mybatis.MyMapper">
   <resultMap id="Data" type="core.model.impl.table">
      <result column="column1" property="one" />
      <result column="column2" property="two" />
      <result column="column3" property="three" />
      <result column="secure" property="sec" />
   </resultMap>

   <select id="getSecure" parameterType="java.lang.Long" resultMap="Data">
      select column1, column2, column3, secureUser.collection.getExampleId(#{id}) secure
      from mytable mt
      where mt.keyId = #{id}
   </select>
</mapper>

字符串
当调用此代码时,我收到错误ORA-00904:“SECUREUSER”.“COLLECTION”.“GETEXAMPLEID”:无效的标识符。我在上面写的PL/SQL中运行了这段代码,它工作正常,并返回正确的数据。在查看错误后,我试图运行上面的代码,在secureUser周围有“s,collection和getExampleId。当我运行它时,我收到了与Java ORA-00904相同的错误,所以我认为Java在select语句中将这些值放在引号中。
如何将此Oracle函数称为secureUser.collection.getExampleId(#{id})secure?
这是工作数据,所以我必须更改所有对象名称。

ybzsozfc

ybzsozfc1#

默认情况下,Oracle SQL不区分大小写。当您使用引号时,您强制区分大小写,因此如果对象不是以 * 完全 * 相同的方式创建的,在原始数据库中使用引号,则无法找到它们。如果无法取消引号,则唯一的选择是使代码中的每个标签都大写,因为这是Oracle的默认表示。

SECUREUSER.COLLECTION.GETEXAMPLEID(#{id})

字符串

相关问题