in src/main/java/com/microsoft/spring/data/gremlin/common/GremlinUtils.java [57:89]
public static <T> Field getIdField(@NonNull Class<T> domainClass) {
final Field idField;
final List<Field> idFields = FieldUtils.getFieldsListWithAnnotation(domainClass, Id.class);
final List<Field> generatedValueFields =
FieldUtils.getFieldsListWithAnnotation(domainClass, GeneratedValue.class);
if (generatedValueFields.size() > 1) {
throw new GremlinIllegalConfigurationException("Only one field, the id field, can have the optional "
+ "@GeneratedValue annotation!");
}
if (idFields.isEmpty()) {
idField = ReflectionUtils.findField(domainClass, Constants.PROPERTY_ID);
} else if (idFields.size() == 1) {
idField = idFields.get(0);
} else {
throw new GremlinInvalidEntityIdFieldException("only one @Id field is allowed");
}
if (idField == null) {
throw new GremlinInvalidEntityIdFieldException("no field named id in class");
} else if (idField.getType() != String.class
&& idField.getType() != Long.class && idField.getType() != Integer.class) {
throw new GremlinInvalidEntityIdFieldException("the type of @Id/id field should be String/Integer/Long");
}
if (generatedValueFields.size() == 1 && !generatedValueFields.get(0).equals(idField)) {
throw new GremlinIllegalConfigurationException("Only the id field can have the optional "
+ "@GeneratedValue annotation!");
}
return idField;
}