in google-cloud-spanner-hibernate-dialect/src/main/java/com/google/cloud/spanner/hibernate/schema/SchemaUtils.java [71:91]
public static boolean validateInterleaved(Class<?> potentialChild) {
Interleaved interleaved = potentialChild.getAnnotation(Interleaved.class);
if (null == interleaved) {
// not interleaved, we're good
return true;
}
try {
Set<SpannerEntityFieldKey> childIds = resolveIdFields(potentialChild, new HashSet<>());
Set<SpannerEntityFieldKey> parentIds =
resolveIdFields(interleaved.parentEntity(), new HashSet<>());
// Child ids should be super set of parent ids
return childIds.size() > parentIds.size() && childIds.containsAll(parentIds);
} catch (SecurityException se) {
// Could not prove the interleaved table to be invalid, so assume valid
return true;
}
}