diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QField.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QField.java index c13b87f5..13ead81c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QField.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QField.java @@ -49,6 +49,11 @@ public @interface QField *******************************************************************************/ String backendName() default ""; + /******************************************************************************* + ** + *******************************************************************************/ + boolean isPrimaryKey() default false; + /******************************************************************************* ** *******************************************************************************/ diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaData.java index a14fc566..99e52602 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaData.java @@ -111,6 +111,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData private ShareableTableMetaData shareableTableMetaData; + /******************************************************************************* ** Default constructor. *******************************************************************************/ @@ -158,11 +159,26 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData public QTableMetaData withFieldsFromEntity(Class entityClass) throws QException { List recordEntityFieldList = QRecordEntity.getFieldList(entityClass); + + boolean setPrimaryKey = false; + for(QRecordEntityField recordEntityField : recordEntityFieldList) { QFieldMetaData field = new QFieldMetaData(recordEntityField.getGetter()); addField(field); + + if(recordEntityField.getFieldAnnotation().isPrimaryKey()) + { + if(setPrimaryKey) + { + throw (new QException("Attempt to set more than one field as primary key (" + primaryKeyField + "," + field.getName() + ").")); + } + + setPrimaryKeyField(field.getName()); + setPrimaryKey = true; + } } + return (this); } @@ -1388,6 +1404,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData } + /******************************************************************************* ** Getter for shareableTableMetaData *******************************************************************************/ @@ -1417,5 +1434,4 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData return (this); } - }