Hi,

I could use some insight as to why I'm getting a CayenneRuntimeException (v.4.1.M1) "No PK Column etc. from the code below..

Thanks,

Andrew

Here's the code...

    public static List<String> getVDN_InList() {
        ArrayList<String> list = new ArrayList<>();
        SQLTemplate select = new SQLTemplate(CallLog.class, "Select distinct VDN_IntoIVR from CallLog");
        //select.setColumnNamesCapitalization(CapsStrategy.UPPER);
        List<String> list2 = CallLogReportMain.getObjectContext().performQuery(select);
        return list;
    }

Executing the actual SQL from the template results in :

MariaDB [CTIData]> Select distinct VDN_IntoIVR from CallLog
    -> ;
+-------------+
| VDN_IntoIVR |
+-------------+
| 5390        |
| 5358        |
| 5356        |
| 5369        |
| 5386        |
| 5273        |
| 5367        |
| 5774        |
| 5284        |
| 5382        |
| 5772        |
| 5371        |
| 5287        |
| 5370        |
| 5362        |
| 5281        |
+-------------+
16 rows in set (0.00 sec)

Here's the extract from the DataMap files...

    <db-entity name="CallLog" catalog="CTIData">
 ...
        <db-attribute name="TRANSCODE" type="VARCHAR" length="30"/>
        <db-attribute name="UNIQUEID" type="VARCHAR" isPrimaryKey="true" isMandatory="true" length="20"/>
        <db-attribute name="UPDATEDBY" type="VARCHAR" length="35"/>
        <db-attribute name="VDN_IntoIVR" type="VARCHAR" length="16"/>
   ...

    </db-entity>

Here's the resultant MariaDB table output extract:

MariaDB [CTIData]> describe CallLog;
+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
...
| TRANSCODE        | varchar(30)  | YES  |     | NULL    |       |
| UNIQUEID         | varchar(20)  | NO   | PRI | NULL    |       |
| UPDATEDBY        | varchar(35)  | YES  |     | NULL    |       |
| VDN_IntoIVR      | varchar(16)  | YES  |     | NULL    |       |
...
+------------------+--------------+------+-----+---------+-------+

MariaDB [CTIData]> show index from CallLog where Key_name = 'PRIMARY';
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| CallLog |          0 | PRIMARY  |            1 | UNIQUEID    | A         |         100 |     NULL | NULL   |      | BTREE |         |               |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

MariaDB [CTIData]> select * from AUTO_PK_SUPPORT;
+------------------------------------------+---------+
| TABLE_NAME                               | NEXT_ID |
+------------------------------------------+---------+
...
| CallLog                                  |     200 |
...

And here is the exception stack....

org.apache.cayenne.CayenneRuntimeException: [v.4.1.M1 Oct 06 2017 09:23:31] No PK column 'UNIQUEID' found in data row.     at org.apache.cayenne.access.ObjectResolver.createObjectId(ObjectResolver.java:218)     at org.apache.cayenne.access.ObjectResolver.objectFromDataRow(ObjectResolver.java:133)     at org.apache.cayenne.access.ObjectResolver.objectsFromDataRows(ObjectResolver.java:119)     at org.apache.cayenne.access.ObjectResolver.synchronizedObjectsFromDataRows(ObjectResolver.java:99)     at org.apache.cayenne.access.ObjectResolver.synchronizedRootResultNodeFromDataRows(ObjectResolver.java:90)     at org.apache.cayenne.access.DataDomainQueryAction$ObjectConversionStrategy.toResultsTree(DataDomainQueryAction.java:637)     at org.apache.cayenne.access.DataDomainQueryAction$SingleObjectConversionStrategy.convert(DataDomainQueryAction.java:687)     at org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:501)     at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:130)     at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:564)     at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)     at org.apache.cayenne.tx.TransactionFilter.onQuery(TransactionFilter.java:49)     at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748)
    at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:556)
    at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:406)     at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:107)     at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:94)
    at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:965)
    at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:954)     at com.callistacti.quest.CTIData.database.CallLog.getVDN_InList(CallLog.java:47)

Reply via email to