/** * Creates a new {@link JpaMetamodelEntityInformation} for the given domain class and {@link Metamodel}. * * @param domainClass must not be {@literal null}. * @param metamodel must not be {@literal null}. */ public JpaMetamodelEntityInformation(Class<T> domainClass, Metamodel metamodel) { super(domainClass); Assert.notNull(metamodel, "Metamodel must not be null!"); this.metamodel = metamodel; ManagedType<T> type = metamodel.managedType(domainClass); if (type == null) { throw new IllegalArgumentException("The given domain class can not be found in the given Metamodel!"); } this.entityName = type instanceof EntityType ? ((EntityType<?>) type).getName() : null; if (!(type instanceof IdentifiableType)) { throw new IllegalArgumentException("The given domain class does not contain an id attribute!"); } IdentifiableType<T> identifiableType = (IdentifiableType<T>) type; this.idMetadata = new IdMetadata<T>(identifiableType); this.versionAttribute = findVersionAttribute(identifiableType, metamodel); }
public String renderTableExpression(RenderingContext renderingContext) { prepareAlias( renderingContext ); return getModel().getName() + " as " + getAlias(); }
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; }
@Override public <U> String entityNameFromClass(Class<U> entity) { if (!useHibernateFullEntityNames) { EntityType<U> entityType = metamodel.entity(entity); if (entityType == null) return null; return entityType.getName(); } else return entity.getName(); }
@Override public <X> Root<X> from(EntityType<X> paramEntityType) { if(!this.criteriaBuilder.getMetaModel().getEntities().contains(paramEntityType)) { throw new IllegalArgumentException("Invalid entity type, {class:" + paramEntityType.getName() + "}"); } return fromEntityType(paramEntityType); }
public static String getEntityName(EntityManager em, Class<?> entityClass) { return em.getMetamodel().entity(entityClass).getName(); } }
/** * Returns the name of the entity referred to by the given class name * @param className * @return if className refers to a known JPA entity, then the * name of the entity if returned. If not, null is returned */ @Override public String entityNameFromClassName(String className) { for (EntityType<?> entity: metamodel.getEntities()) { // Envers can insert entities with null Java types into the metamodel if (entity.getJavaType() == null) continue; if (entity.getJavaType().getName().equals(className)) { if (!useHibernateFullEntityNames) return entity.getName(); else return className; } } return null; }
/** * Assert on managed type. * * @param <X> * the generic type * @param builder * the builder * @param managedTypeField * the managed type field * @param clazz * the clazz * @return the abstract managed type * @throws IllegalAccessException * the illegal access exception */ @SuppressWarnings({ "rawtypes", "unchecked" }) private <X> AbstractManagedType<X> assertOnManagedType(MetaModelBuilder builder, Field managedTypeField, Class<?> clazz) throws IllegalAccessException { log.info("Assert on managedType"); AbstractManagedType<X> managedType = (AbstractManagedType<X>) managedTypeField.get(builder); Assert.assertNotNull(managedType); Assert.assertEquals(clazz, ((EntityType<X>) managedType).getBindableJavaType()); Assert.assertEquals(BindableType.ENTITY_TYPE, ((EntityType<X>) managedType).getBindableType()); Assert.assertEquals(PersistenceType.ENTITY, ((EntityType<X>) managedType).getPersistenceType()); Assert.assertEquals(clazz.getSimpleName(), ((EntityType<X>) managedType).getName()); Assert.assertNotSame(clazz.getDeclaredFields().length, managedType.getSingularAttributes().size()); Assert.assertEquals(3, managedType.getSingularAttributes().size()); return managedType; }
Assert.assertEquals(BindableType.ENTITY_TYPE, ((EntityType<X>) managedType).getBindableType()); Assert.assertEquals(PersistenceType.ENTITY, ((EntityType<X>) managedType).getPersistenceType()); Assert.assertEquals(clazz.getSimpleName(), ((EntityType<X>) managedType).getName());
@Override public String toString() { return "replication-job [persist: " + entity.getName() + "@" + id + "]"; } });
@Override public void render(RenderContext context) { final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT("); treatedPath.renderPathExpression(context); buffer.append(" AS ") .append(getTreatType().getName()) .append(')'); } }
@Override public void render(RenderContext context) { final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT("); treatedPath.renderPathExpression(context); buffer.append(" AS ") .append(getTreatType().getName()) .append(')'); } }
@Override public void render(RenderContext context) { prepareAlias(context); final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT(") .append(getAlias()) .append(" AS ") .append(getTreatType().getName()) .append(')'); } }
@Override public void render(RenderContext context) { prepareAlias(context); final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT(") .append(getAlias()) .append(" AS ") .append(getTreatType().getName()) .append(')'); } }
@Override public void afterPropertiesSet() throws Exception { Set<EntityType<?>> entities = entityManager.getMetamodel().getEntities(); // key:table,value:EntityClass entities.forEach(e -> entityMap.put(e.getName(), e.getBindableJavaType().getName())); }
@Override public void render(RenderContext context) { prepareAlias(context); final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT(") .append(getAlias()) .append(" AS ") .append(getTreatType().getName()) .append(')'); } }
@Override public void render(RenderContext context) { prepareAlias(context); final StringBuilder buffer = context.getBuffer(); buffer.append("TREAT(") .append(getAlias()) .append(" AS ") .append(getTreatType().getName()) .append(')'); } }
private Table addEntity(MetadataFactory mf, Metamodel model, EntityType<?> entity) throws TranslatorException { Table table = mf.getSchema().getTable(entity.getName()); if (table == null) { table = mf.addTable(entity.getName()); table.setSupportsUpdate(true); table.setProperty(ENTITYCLASS, entity.getJavaType().getCanonicalName()); addPrimaryKey(mf, model, entity, table); addSingularAttributes(mf, model, entity, table, Collections.EMPTY_LIST); } return table; }
@Override public void run() { repService.persist(bean); if (!connected) { entity = connection().getMetamodel().entity(bean.getClass()); String idName = entity.getId(bean.getClass()).getName(); id = BeanClass.getValue(bean, idName); repService.persist(new ReplicationChange(entity.getName(), id)); } }
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; }