CE-938 add isPrimaryKey to @QField

This commit is contained in:
2024-05-19 20:24:06 -05:00
parent 85eae36c28
commit 9c79ce3272
2 changed files with 22 additions and 1 deletions

View File

@ -49,6 +49,11 @@ public @interface QField
*******************************************************************************/ *******************************************************************************/
String backendName() default ""; String backendName() default "";
/*******************************************************************************
**
*******************************************************************************/
boolean isPrimaryKey() default false;
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/

View File

@ -111,6 +111,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
private ShareableTableMetaData shareableTableMetaData; private ShareableTableMetaData shareableTableMetaData;
/******************************************************************************* /*******************************************************************************
** Default constructor. ** Default constructor.
*******************************************************************************/ *******************************************************************************/
@ -158,11 +159,26 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
public QTableMetaData withFieldsFromEntity(Class<? extends QRecordEntity> entityClass) throws QException public QTableMetaData withFieldsFromEntity(Class<? extends QRecordEntity> entityClass) throws QException
{ {
List<QRecordEntityField> recordEntityFieldList = QRecordEntity.getFieldList(entityClass); List<QRecordEntityField> recordEntityFieldList = QRecordEntity.getFieldList(entityClass);
boolean setPrimaryKey = false;
for(QRecordEntityField recordEntityField : recordEntityFieldList) for(QRecordEntityField recordEntityField : recordEntityFieldList)
{ {
QFieldMetaData field = new QFieldMetaData(recordEntityField.getGetter()); QFieldMetaData field = new QFieldMetaData(recordEntityField.getGetter());
addField(field); 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); return (this);
} }
@ -1388,6 +1404,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
} }
/******************************************************************************* /*******************************************************************************
** Getter for shareableTableMetaData ** Getter for shareableTableMetaData
*******************************************************************************/ *******************************************************************************/
@ -1417,5 +1434,4 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
return (this); return (this);
} }
} }