Hello, all!
I want to create a good DIH configuration for my Oracle database with deltas support. Unfortunately I am not able to do it well as DIH has the strange restrictions. I want to explain a problem on a simple example. In a reality my database has very difficult structure. Initial conditions: Two tables with following easy structure: Table1 - ID_RECORD (Primary key) - DATA_FIELD1 - .. - DATA_FIELD2 - LAST_CHANGE_TIME Table2 - ID_RECORD (Primary key) - PARENT_ID_RECORD (Foreign key to Table1.ID_RECORD) - DATA_FIELD1 - .. - DATA_FIELD2 - LAST_CHANGE_TIME In performance reasons it is necessary to do selection of the given tables by means of one request (via inner join). My db-data-config.xml file: <?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource jndiName="jdbc/DB1" type="JdbcDataSource" user="" password=""/> <document> <entity name="ent" pk="T1_ID_RECORD, T2_ID_RECORD" query="select * from TABLE1 t1 inner join TABLE2 t2 on t1.ID_RECORD = t2.PARENT_ID_RECORD" deltaQuery="select t1.ID_RECORD T1_ID_RECORD, t1.ID_RECORD T2_ID_RECORD from TABLE1 t1 inner join TABLE2 t2 on t1.ID_RECORD = t2.PARENT_ID_RECORD where TABLE1.LAST_CHANGE_TIME > to_date('${dataimporter.last_index_time}', 'YYYY-MM-DD HH24:MI:SS') or TABLE2.LAST_CHANGE_TIME > to_date('${dataimporter.last_index_time}', 'YYYY-MM-DD HH24:MI:SS')" deltaImportQuery="select * from TABLE1 t1 inner join TABLE2 t2 on t1.ID_RECORD = t2.PARENT_ID_RECORD where t1.ID_RECORD = ${dataimporter.delta.T1_ID_RECORD} and t2.ID_RECORD = ${dataimporter.delta.T2_ID_RECORD}" /> </document> </dataConfig> In result I have following error: java.lang.IllegalArgumentException: deltaQuery has no column to resolve to declared primary key pk='T1_ID_RECORD, T2_ID_RECORD' I have analyzed the source code of DIH. I found that in the DocBuilder class collectDelta() method works with value of entity attribute "pk" as with simple string. But in my case this is array with two values: T1_ID_RECORD, T2_ID_RECORD What do I do wrong? Thanks, Eugeny