在网关 Java 的缓存中设置代理 Java 对象的数据类型 java.util.Date 属性

Set a datatype java.util.Date property of proxy Java Object in Cache by Gateway Java

我正在实施一个通过 Java 网关将 Caché 应用程序与 Java 应用程序集成的解决方案。在 Java 应用程序中,我有一个具有 属性 数据类型 "java.util.Date" 的对象,我必须在 Caché 应用程序中进行设置。我可以为此使用什么数据类型的 Caché 以及如何在 Caché 中设置该变量?

代码:

S data = ???
S obj = ##class(my.objectClass).%New(gateway) 
D obj.setDh(data)

class my.objectClass 是代理 class 并且 setDh() 中参数的数据类型是 java.sql.Date.

我什么时候可以设置 data 变量?

此致,

Lucas Boeing Scarduelli。

正如 Java Proxy Class Mapping 指出的那样,有一个从 java.sql.Date 到缓存类型 DATE 的映射,建议您使用它。 由于 java.sql.Datejava.util.Date 的子类,并且 java.sql.Date 有一个构造函数在 Java 端进行 java.util.Date 转换应该非常简单。

我使用以下解决方案解决了我的问题。

在 Java 应用程序中,在 class my.objectClass 上,我将属性分配为 java.sql.Timestamp,因此 setDh() 具有相同的数据类型参数。

在 Caché 应用程序中,当我必须为此代理分配值时 class 我这样做:

S data = $ZDT($H,3)
S obj = ##class(my.objectClass).%New(gateway) 
D obj.setDh(data)

为什么使用 java.sql.Timestamp 而不是 java.sql.Date

基本上是因为在我的例子中我需要日期和时间信息,而 java.sql.Date 的本地解析器只考虑日期信息。 java.sql.Timestamp 本机解析器已经考虑了日期和时间信息。