如何将 AQMessage STRUCT 对象转换为 UDT 对象

How to cast AQMessage STRUCT object to UDT object

正在尝试从 java 中的 oracle AQ 队列中读取带有 UDT 负载的消息。我使用 jpub 在数据库中为我的 Oracle UDT/Object 创建了 java 类(名为 MESSAGE_TYP 的对象)。

jpub 输出:

public class message_typ implements ORAData, ORADataFactory ...

然后deuque消息并得到STRUCT:

oracle.jdbc.aq.AQMessage msg = conn.dequeue(queueName, deqopt, "MESSAGE_TYP");
STRUCT st = msg.getSTRUCTPayload();

那么我如何获得具体的 message_typ 对象引用?

想通了。调用 msg.getSTRUCTPayload() 后:

    message_typ typ;  // My UDT created with jpub
    ORADataFactory of = message_typ.getORADataFactory();
    ORAData od = of.create(st, 1);
    typ = (message_typ)od;