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)