点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,我们在使用Sap Hana数据库的测试环境中遇到问题。 当我们进行结帐的第一步时,就会发生问题。 我们的应用程序是具有6.7.0.3 hybris版本和OOTB配置(带有小程序个性化设置)的Marketplace。 该问题发生在hybris平台拥有的针对产品模型可销售字段的查询中。 SAP建议通过重新定义具有SAP数据库特定定义的属性类型的解决方法,如下所述:
<属性>
BOOLEAN
初始化系统后,此方法无效,并返回与下一个描述类似的错误:
com.sap.db.jdbc.exceptions.JDBCDriverException:SAP DBTech JDBC:[266]:不一致的数据类型:BOOLEAN类型与DECIMAL类型不兼容。:第1列第187行(位置186)
在com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:201)
在com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:45)
在com.sap.db.jdbc.packet.HReplyPacket._buildExceptionChain(HReplyPacket.java:934)
在com.sap.db.jdbc.packet.HReplyPacket.getSQLExceptionChain(HReplyPacket.java:130)
在com.sap.db.jdbc.packet.HPartInfo.getSQLExceptionChain(HPartInfo.java:39)
在com.sap.db.jdbc.ConnectionSapDB._receive(ConnectionSapDB.java:3079)
在com.sap.db.jdbc.ConnectionSapDB.exchange(ConnectionSapDB.java:1642)
在com.sap.db.jdbc.PreparedStatementSapDB._prepare(PreparedStatementSapDB.java:2745)
在com.sap.db.jdbc.PreparedStatementSapDB._doParse(PreparedStatementSapDB.java:2667)
在com.sap.db.jdbc.PreparedStatementSapDB。(PreparedStatementSapDB.java:132)
在com.sap.db.jdbc.PreparedStatementSapDBFinalize。(PreparedStatementSapDBFinalize.java:37)
在com.sap.db.jdbc.PreparedStatementSapDBFinalize.newInstance(PreparedStatementSapDBFinalize.java:23)
在com.sap.db.jdbc.ConnectionSapDB._prepareStatement(ConnectionSapDB.java:2917)
在com.sap.db.jdbc.ConnectionSapDB.prepareStatement(ConnectionSapDB.java:254)
查询产生错误是在平台上在java文件DefaultMarketplaceCartEntryDao.java上,并且看起来像这样:
受保护的静态最终字符串FIND_UNSALEBALE_CARTENTRIES_IN_CART ="从{"中选择{A:" + CartEntryModel.PK +"}
+ CartEntryModel._TYPECODE +"作为一个联接" + ProductModel._TYPECODE +"在{A:"上按AS + + CartEntryModel.PRODUCT +"} = {B:"
+ ProductModel.PK +"} JOIN" + CartModel._TYPECODE
+"作为{A:"上的C + + CartEntryModel.ORDER +"} = {C:" + CartModel.PK +"}}在{B:" + ProductModel.SALEABLE
+"} = false和{C:" + CartModel.CODE +"} =?" + CART_CODE;
有人知道解决方法或解决方案吗?
谢谢。
我们只是找到一种局部解决方案,方法是更改查询,用查询内部参数集接收到的BOOLEAN值替换查询中的错误值。 这是部分解决方案,因为我们应该用布尔参数替换内部具有false/true值的所有查询。 对于比将布尔字段与0或1进行比较的查询没有问题,它在sap hana上运行良好,但仅在具有true/false值的情况下失败。
接下来是在我们特定情况下此查询的解决方案:
那不是异常抛出,但在sap初始化时,hana必须创建BOOLEAN类型可销售的字段,如在SAP数据库的类型声明中指出的那样,但仍创建DECIMAL之类的字段。 之后,该查询无法运行并引发异常,因为它无法将DECIMAL与BOOLEAN值进行比较。 最后,在声明时使用redeclare属性不会更改数据库字段类型,这是核心问题。
我已经尝试了以下代码段。 这对我来说可以。 使用SAP Hana和Hybris 6.7。 但这是我在自定义核心中的"产品"项目类型下声明的
这对我来说是行不通的,因为您创建了一个新属性,但是我需要为产品模型中的现有属性重新声明数据库类型,该模型必须在hana数据库BOOLEAN中具有列类型,而不是 十进制。 Hybris在oracle数据库中将布尔类型自动转换为INT类型,但在hana数据库中则不会。
一周热门 更多>