如何将AQMessage STRUCT对象转换为UDT对象(How to cast AQMessage STRUCT object to UDT object)

尝试从java中的oracle AQ队列读取带有UDT有效负载的消息。 我使用jpub为数据库中的Oraacle 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对象引用呢?

Trying to read a message with UDT payload from oracle AQ queue in java. I used jpub to create java classes for my Oraacle UDT/Object in the database (object called MESSAGE_TYP).

jpub output:

public class message_typ implements ORAData, ORADataFactory ...

Then deuque message and get STRUCT:

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

So How do I then get to my concrete message_typ object reference?

最满意答案

弄清楚了。 调用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;

Figured it out. After call to 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;

更多推荐