private EntityType locateNearestSubclassEntity(MappedSuperclassType mappedSuperclassType, EntityType entityTypeTop) { EntityType entityTypeNearestDeclaringType = entityTypeTop; IdentifiableType superType = entityTypeNearestDeclaringType.getSupertype(); while ( superType != mappedSuperclassType ) { if ( superType == null ) { throw new IllegalStateException( String.format( "Cannot determine nearest EntityType extending mapped superclass [%s] starting from [%s]; a supertype of [%s] is null", mappedSuperclassType.getJavaType().getName(), entityTypeTop.getJavaType().getName(), entityTypeTop.getJavaType().getName() ) ); } if ( superType.getPersistenceType() == Type.PersistenceType.ENTITY ) { entityTypeNearestDeclaringType = (EntityType) superType; } superType = superType.getSupertype(); } return entityTypeNearestDeclaringType; } }
private List<Map<String, ?>> recordsInfo() { List<Map<String, ?>> records = U.list(); for (EntityType<?> type : JPA.getEntityTypes()) { Class<?> javaType = type.getJavaType(); long count = JPA.count(javaType); String idType = type.getIdType() != null ? type.getIdType().getJavaType().getSimpleName() : ""; Object superType = type.getSupertype() != null ? type.getSupertype().getJavaType().getSimpleName() : ""; records.add(U.map("type", type.getName(), "extends", superType, "ID Type", idType, "count", count)); } return records; }
/** * * @param metadata * @param clazz * @param metaModelBuilder */ private <X, T> void validateandSetEntityType(EntityMetadata metadata, Class<X> clazz, MetaModelBuilder<X, T> metaModelBuilder) { if (metadata.getType() == null && clazz != null && !clazz.equals(Object.class) && clazz.isAnnotationPresent(javax.persistence.Entity.class)) { EntityType entityType = (EntityType) metaModelBuilder.getManagedTypes().get(clazz); if (entityType.getSupertype() != null) { Set<Attribute> attributes = ((AbstractIdentifiableType) entityType.getSupertype()).getAttributes(); Iterator<Attribute> iter = attributes.iterator(); while (iter.hasNext()) { Attribute attribute = iter.next(); Field f = (Field) ((Field) attribute.getJavaMember()); onFamilyType(metadata, clazz, f); } } validateandSetEntityType(metadata, (Class<X>) clazz.getSuperclass(), metaModelBuilder); } }
/** * * @param metadata * @param clazz * @param metaModelBuilder */ private <X, T> void validateAndSetId(EntityMetadata metadata, Class<X> clazz, MetaModelBuilder<X, T> metaModelBuilder) { if (metadata.getIdAttribute() == null) { EntityType entityType = (EntityType) metaModelBuilder.getManagedTypes().get(clazz); if (entityType.getSupertype() != null) { Attribute idAttribute = ((AbstractIdentifiableType) entityType.getSupertype()).getIdAttribute(); metadata.setIdAttribute((SingularAttribute) idAttribute); populateIdAccessorMethods(metadata, clazz, (Field) idAttribute.getJavaMember()); } } validateIdAttribute(metadata.getIdAttribute(), clazz); }
private List<Map<String, ?>> recordsInfo() { List<Map<String, ?>> records = U.list(); for (EntityType<?> type : JPA.getEntityTypes()) { Class<?> javaType = type.getJavaType(); long count = JPA.count(javaType); String idType = type.getIdType() != null ? type.getIdType().getJavaType().getSimpleName() : ""; Object superType = type.getSupertype() != null ? type.getSupertype().getJavaType().getSimpleName() : ""; records.add(U.map("type", type.getName(), "extends", superType, "ID Type", idType, "count", count)); } return records; }