Java 类org.hibernate.persister.entity.AbstractEntityPersister 实例源码
项目:lams
文件:EntityIdentifierDefinitionHelper.java
public static EntityIdentifierDefinition buildSimpleEncapsulatedIdentifierDefinition(final AbstractEntityPersister entityPersister) {
return new EncapsulatedEntityIdentifierDefinition() {
private final AttributeDefinitionAdapter attr = new AttributeDefinitionAdapter( entityPersister);
@Override
public AttributeDefinition getAttributeDefinition() {
return attr;
}
@Override
public boolean isEncapsulated() {
return true;
}
@Override
public EntityDefinition getEntityDefinition() {
return entityPersister;
}
};
}
项目:lams
文件:EntityIdentifierDefinitionHelper.java
public static EntityIdentifierDefinition buildEncapsulatedCompositeIdentifierDefinition(
final AbstractEntityPersister entityPersister) {
return new EncapsulatedEntityIdentifierDefinition() {
private final CompositionDefinitionAdapter compositionDefinition = new CompositionDefinitionAdapter( entityPersister );
@Override
public AttributeDefinition getAttributeDefinition() {
return compositionDefinition;
}
@Override
public boolean isEncapsulated() {
return true;
}
@Override
public EntityDefinition getEntityDefinition() {
return entityPersister;
}
};
}
项目:second-opinion-api
文件:TruncateDatabaseService.java
@Transactional
public void truncate() throws Exception {
List<String> tableNames = new ArrayList<>();
Session session = entityManager.unwrap(Session.class);
Map<String, ClassMetadata> hibernateMetadata = session.getSessionFactory().getAllClassMetadata();
for (ClassMetadata classMetadata : hibernateMetadata.values()) {
AbstractEntityPersister aep = (AbstractEntityPersister) classMetadata;
tableNames.add(aep.getTableName());
}
entityManager.flush();
entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY FALSE").executeUpdate();
tableNames.forEach(tableName -> entityManager.createNativeQuery("TRUNCATE TABLE " + tableName).executeUpdate());
entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY TRUE").executeUpdate();
}
项目:Layer-Query
文件:CustomCriteriaQueryTranslator.java
/**
* REVISAR NIKOLAS
*/
@Override
public String[] getColumns(
String propertyName,
Criteria subcriteria) throws HibernateException {
// return getPropertyMapping( getEntityName( subcriteria, propertyName ) )
// .toColumns(
// getSQLAlias( subcriteria, propertyName ),
// getPropertyName( propertyName )
// );
String alias = getSQLAlias( subcriteria, propertyName );
String property = getPropertyName( propertyName );
String _root = AbstractEntityPersister.generateTableAlias(
alias,
0
);
return new String[]{_root+"."+property};
}
项目:mycore
文件:MCRHibernateConfigHelper.java
private static void modifyConstraints(SessionFactoryImpl sessionFactoryImpl) {
ClassMetadata classMetadata = sessionFactoryImpl.getClassMetadata(MCRCategoryImpl.class);
AbstractEntityPersister aep = (AbstractEntityPersister) classMetadata;
String qualifiedTableName = aep.getTableName();
try (Session session = sessionFactoryImpl.openSession()) {
session.doWork(connection -> {
String updateStmt = Stream.of("ClassLeftUnique", "ClassRightUnique")
.flatMap(idx -> Stream.of("drop constraint if exists " + idx,
MessageFormat.format(
"add constraint {0} unique ({1}) deferrable initially deferred",
idx, getUniqueColumns(MCRCategoryImpl.class, idx))))
.collect(Collectors.joining(", ", getAlterTableString(connection) + qualifiedTableName + " ", ""));
try (Statement stmt = connection.createStatement()) {
LogManager.getLogger().info("Fixing PostgreSQL Schema for {}:\n{}", qualifiedTableName, updateStmt);
stmt.execute(updateStmt);
}
});
}
}
项目:engerek
文件:RUtil.java
private static void fixCompositeIdentifierInMetaModel(SessionFactory sessionFactory, Class clazz) {
ClassMetadata classMetadata = sessionFactory.getClassMetadata(clazz);
if (classMetadata instanceof AbstractEntityPersister) {
AbstractEntityPersister persister = (AbstractEntityPersister) classMetadata;
EntityMetamodel model = persister.getEntityMetamodel();
IdentifierProperty identifier = model.getIdentifierProperty();
try {
Field field = IdentifierProperty.class.getDeclaredField("hasIdentifierMapper");
field.setAccessible(true);
field.set(identifier, true);
field.setAccessible(false);
} catch (Exception ex) {
throw new SystemException("Attempt to fix entity meta model with hack failed, reason: "
+ ex.getMessage(), ex);
}
}
}
项目:singular-server
文件:HealthSystemDbService.java
public HealthInfoDTO getAllDbMetaData() {
List<TableInfoDTO> tables = new ArrayList<>();
try {
Map<String, ClassMetadata> map = saudeDao.getAllDbMetaData();
map.forEach((k, v) -> tables.add(getTableInfo((AbstractEntityPersister) v)));
Optional<IValidatorDatabase> validator = verificaDialetoUtilizado();
if (validator.isPresent()) {
validator.get().checkAllInfoTable(tables);
}
} catch (Exception e) {
getLogger().error(e.getMessage(), e);
tables.clear();
}
return new HealthInfoDTO(tables);
}
项目:singular-server
文件:HealthSystemDbService.java
private TableInfoDTO getTableInfo(AbstractEntityPersister persister) {
TableInfoDTO tableInfoDTO = new TableInfoDTO();
String[] name = SqlUtil.replaceSingularSchemaName(persister.getTableName()).split("\\.");
tableInfoDTO.setSchema(name[0]);
tableInfoDTO.setTableName(name[1]);
List<String> columns = new ArrayList<>();
String[] propertyNames = persister.getPropertyNames();
Arrays.asList(propertyNames).forEach(propertyName ->
columns.add(persister.getPropertyColumnNames(propertyName)[0]));
Arrays.asList(persister.getIdentifierColumnNames()).forEach(chave -> {
if (!columns.contains(chave)) {
columns.add(chave);
}
});
List<ColumnInfoDTO> columnsType = new ArrayList<>();
columns.forEach(col -> columnsType.add(new ColumnInfoDTO(col, true)));
tableInfoDTO.setColumnsInfo(columnsType);
return tableInfoDTO;
}
项目:hql-builder
文件:HqlServiceImpl.java
/**
* @see org.tools.hqlbuilder.common.HqlService#getProperties(java.lang.String)
*/
@Override
public List<String> getProperties(String classname) {
if (StringUtils.isBlank(classname)) {
throw new IllegalArgumentException("classname");
}
Map<String, ?> allClassMetadata = new MetadataResolver().getAllClassMetadata(sessionFactory);
Object classMeta = allClassMetadata.get(classname);
if (classMeta == null) {
return null;
}
List<String> propertyNames = new ArrayList<>(Arrays.asList(AbstractEntityPersister.class.cast(classMeta).getPropertyNames()));
propertyNames.remove("id");
propertyNames.remove("version");
return propertyNames;
}
项目:midpoint
文件:RUtil.java
private static void fixCompositeIdentifierInMetaModel(SessionFactory sessionFactory, Class clazz) {
ClassMetadata classMetadata = sessionFactory.getClassMetadata(clazz);
if (classMetadata instanceof AbstractEntityPersister) {
AbstractEntityPersister persister = (AbstractEntityPersister) classMetadata;
EntityMetamodel model = persister.getEntityMetamodel();
IdentifierProperty identifier = model.getIdentifierProperty();
try {
Field field = IdentifierProperty.class.getDeclaredField("hasIdentifierMapper");
field.setAccessible(true);
field.set(identifier, true);
field.setAccessible(false);
} catch (Exception ex) {
throw new SystemException("Attempt to fix entity meta model with hack failed, reason: "
+ ex.getMessage(), ex);
}
}
}
项目:SeDiCo
文件:SedicoReadInterceptor.java
/**
* Diese Methode lädt die Daten um eine Tabelle zu erzeugen.
*/
@Override
public void onPreLoad(PreLoadEvent preLoadEvent) {
//System.out.println("onPreLoad ausgelöst");
Serializable id = preLoadEvent.getId();
Object[] values = preLoadEvent.getState();
persister = (AbstractEntityPersister)preLoadEvent.getPersister();
//virtuelle Table aufbauen
List<Row> rows = new ArrayList();
List<ColumnDescriptor> columnDescriptors = new ArrayList();
List<Column> columns = new ArrayList();
columnDescriptors.add(addIdentifierToColumns(columns, id));
columnDescriptors.addAll(addPropertiesToColumns(columns, values));
Row row = new Row(columns);
rows.add(row);
//Ergebnisse holen und in values verfrachten
//System.out.println("Erzeuge virtuelle Tabelle: " + persister.getRootTableName());
Table table = new Table(persister.getRootTableName(), rows, columnDescriptors);
TableReader reader = new TableReader();
table = reader.select(table);
setValuesFromRow(table.getRows().get(0), values);
}
项目:breeze.server.java
文件:HibernateMetadata.java
/**
* Return names of all properties that are defined in the mapped ancestors of the given
* persister. Note that unmapped superclasses are deliberately ignored, because they shouldn't
* affect the metadata.
*
* @param persister
* @return set of property names. Empty if the persister doesn't have a superclass.
*/
HashSet<String> getSuperProperties(AbstractEntityPersister persister) {
HashSet<String> set = new HashSet<String>();
String superClassName = persister.getMappedSuperclass();
if (superClassName == null)
return set;
ClassMetadata superMeta = _sessionFactory.getClassMetadata(superClassName);
if (superMeta == null)
return set;
String[] superProps = superMeta.getPropertyNames();
set.addAll(Arrays.asList(superProps));
set.add(superMeta.getIdentifierPropertyName());
return set;
}
项目:breeze.server.java
文件:HibernateMetadata.java
/**
* Get the column names for a given property as an array of unbracketed,
* lowercase names. For a collection property, the column name is the inverse foreign key (i.e.
* the column on the other table that points back to the persister's table)
*/
String[] getPropertyColumnNames(AbstractEntityPersister persister, String propertyName, Type propType) {
String[] propColumnNames = null;
if (propType.isCollectionType()) {
propColumnNames = ((CollectionType) propType).getAssociatedJoinable((SessionFactoryImplementor) this._sessionFactory)
.getKeyColumnNames();
} else {
propColumnNames = persister.getPropertyColumnNames(propertyName);
}
if (propColumnNames == null || propColumnNames.length == 0) {
// this happens when the property is part of the key
propColumnNames = persister.getKeyColumnNames();
}
// HACK for formula: when using formula propColumnNames[0] equals null
if (propColumnNames[0] == null)
{
propColumnNames = new String[] { propertyName };
}
return unBracket(propColumnNames);
}
项目:midpoint
文件:RUtil.java
private static void fixCompositeIdentifierInMetaModel(SessionFactory sessionFactory, Class clazz) {
ClassMetadata classMetadata = sessionFactory.getClassMetadata(clazz);
if (classMetadata instanceof AbstractEntityPersister) {
AbstractEntityPersister persister = (AbstractEntityPersister) classMetadata;
EntityMetamodel model = persister.getEntityMetamodel();
IdentifierProperty identifier = model.getIdentifierProperty();
try {
Field field = IdentifierProperty.class.getDeclaredField("hasIdentifierMapper");
field.setAccessible(true);
field.set(identifier, true);
field.setAccessible(false);
} catch (Exception ex) {
throw new SystemException("Attempt to fix entity meta model with hack failed, reason: "
+ ex.getMessage(), ex);
}
}
}
项目:dockyard-controller
文件:NewMetadataBuilder.java
private String getGeneratorType(AbstractEntityPersister entityPersister) {
String generatorType = null;
IdentifierGenerator generator = entityPersister != null ? entityPersister.getIdentifierGenerator() : null;
if (generator != null) {
if (generator instanceof IdentityGenerator)
generatorType = "Identity";
else if (generator instanceof Assigned)
generatorType = "None";
else
generatorType = "KeyGenerator";
}
return generatorType;
}
项目:lams
文件:CompositionSingularSubAttributesHelper.java
/**
* Get composite ID sub-attribute definitions.
*
* @param entityPersister - the entity persister.
*
* @return composite ID sub-attribute definitions.
*/
public static Iterable<AttributeDefinition> getIdentifierSubAttributes(AbstractEntityPersister entityPersister) {
return getSingularSubAttributes(
entityPersister,
entityPersister,
(CompositeType) entityPersister.getIdentifierType(),
entityPersister.getTableName(),
entityPersister.getRootTableIdentifierColumnNames()
);
}
项目:lams
文件:DynamicFilterAliasGenerator.java
@Override
public String getAlias(String table) {
if (table == null){
return rootAlias;
} else{
return AbstractEntityPersister.generateTableAlias(rootAlias, AbstractEntityPersister.getTableId(table, tables));
}
}
项目:abixen-platform
文件:DatabaseH2ServiceImpl.java
private void loadSystemTableList(SessionFactory sessionFactory) {
Map<String, ClassMetadata> allClassMetadata = sessionFactory.getAllClassMetadata();
allClassMetadata.forEach((key, value) -> {
AbstractEntityPersister abstractEntityPersister = (AbstractEntityPersister) value;
SYSTEM_TABLE_LIST.add(abstractEntityPersister.getTableName());
});
}
项目:breeze.server.java
文件:RelationshipFixer.java
/**
* Find a foreign key matching the given property, by looking in the fkMap.
* The property may be defined on the class or a superclass, so this function calls itself recursively.
* @param propName Name of the property e.g. "Product"
* @param meta Class metadata, for traversing the class hierarchy
* @return The name of the foreign key, e.g. "ProductID"
*/
private String findForeignKey(String propName, ClassMetadata meta) {
String relKey = meta.getEntityName() + '.' + propName;
if (fkMap.containsKey(relKey)) {
return fkMap.get(relKey);
} else if (meta.isInherited() && meta instanceof AbstractEntityPersister) {
String superEntityName = ((AbstractEntityPersister) meta).getMappedSuperclass();
ClassMetadata superMeta = sessionFactory.getClassMetadata(superEntityName);
return findForeignKey(propName, superMeta);
} else {
throw new IllegalArgumentException("Foreign Key '" + relKey + "' could not be found.");
}
}
项目:dockyard-controller
文件:NewMetadataBuilder.java
/**
* Build the Breeze metadata as a nested HashMap.
* The result can be converted to JSON and sent to the Breeze client.
*/
public Root buildMetadata() throws Exception {
Root root = new Root();
for (ClassMetadata classMetadata: this.sessionFactory.getAllClassMetadata().values()) {
if (classMetadata instanceof AbstractEntityPersister) {
this.addClassToMetadata(root, (AbstractEntityPersister) classMetadata);
}
}
return root;
}
项目:dockyard-controller
文件:NewMetadataBuilder.java
/**
* Checks to see if a property is implemented in own class by checking to see if the parent
* has the property also.
*
* @param abstractEntityPersister
* @param propertyName
* @return
*/
boolean hasOwnProperty(AbstractEntityPersister abstractEntityPersister, String propertyName) {
for (Field field: abstractEntityPersister.getMappedClass().getDeclaredFields()) {
if (field.getName().equals(propertyName)) {
return true;
}
}
return false;
}
项目:dockyard-controller
文件:MetadataBuilder.java
/**
* Get the column names for a given property as a comma-delimited String of unbracketed, lowercase names.
*/
String getPropertyColumnNames(AbstractEntityPersister persister, String propertyName) {
String propColumnNames[] = persister.getPropertyColumnNames(propertyName);
if (propColumnNames.length == 0) {
// this happens when the property is part of the key
propColumnNames = persister.getKeyColumnNames();
}
StringBuilder sb = new StringBuilder();
for (String s : propColumnNames) {
if (sb.length() > 0) sb.append(',');
sb.append(unBracket(s));
}
return sb.toString().toLowerCase();
}
项目:lams
文件:EntityIdentifierDefinitionHelper.java
public static EntityIdentifierDefinition buildNonEncapsulatedCompositeIdentifierDefinition(final AbstractEntityPersister entityPersister) {
return new NonEncapsulatedEntityIdentifierDefinition() {
private final CompositionDefinitionAdapter compositionDefinition = new CompositionDefinitionAdapter( entityPersister );
@Override
public Iterable<AttributeDefinition> getAttributes() {
return compositionDefinition.getAttributes();
}
@Override
public Class getSeparateIdentifierMappingClass() {
return entityPersister.getEntityMetamodel().getIdentifierProperty().getType().getReturnedClass();
}
@Override
public boolean isEncapsulated() {
return false;
}
@Override
public EntityDefinition getEntityDefinition() {
return entityPersister;
}
@Override
public Type getCompositeType() {
return entityPersister.getEntityMetamodel().getIdentifierProperty().getType();
}
@Override
public AttributeSource getSource() {
return compositionDefinition;
}
@Override
public String getName() {
// Not sure this is always kosher. See org.hibernate.tuple.entity.EntityMetamodel.hasNonIdentifierPropertyNamedId
return "id";
}
@Override
public CompositeType getType() {
return (CompositeType) getCompositeType();
}
@Override
public boolean isNullable() {
return compositionDefinition.isNullable();
}
};
}
项目:lams
文件:EntityIdentifierDefinitionHelper.java
AttributeDefinitionAdapter(AbstractEntityPersister entityPersister) {
this.entityPersister = entityPersister;
}
项目:lams
文件:EntityIdentifierDefinitionHelper.java
protected AbstractEntityPersister getEntityPersister() {
return entityPersister;
}
项目:lams
文件:EntityIdentifierDefinitionHelper.java
CompositionDefinitionAdapter(AbstractEntityPersister entityPersister) {
super( entityPersister );
}
项目:ctsms
文件:QueryUtil.java
private static String getPropertyColumnName(Class entity, String property, SessionFactory sessionFactory) {
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(entity);
AbstractEntityPersister persister = (AbstractEntityPersister) hibernateMetadata;
String[] columnNames = persister.getPropertyColumnNames(property);
return columnNames[0];
}
项目:geoxygene
文件:GeodatabaseHibernate.java
/** Renseigne l'attribut _metadataList. */
protected void initMetadata() {
this.metadataList = new ArrayList<Metadata>();
Map<?, ?> allClassesMetadata = HibernateUtil.getSessionFactory().getAllClassMetadata();
for (Object key : allClassesMetadata.keySet()) {
if (GeodatabaseHibernate.logger.isDebugEnabled()) {
GeodatabaseHibernate.logger.debug("key = " + key);
}
ClassMetadata classMetadata = (ClassMetadata) allClassesMetadata.get(key);
if (GeodatabaseHibernate.logger.isDebugEnabled()) {
GeodatabaseHibernate.logger.debug("metadata = " + classMetadata);
}
String className = (classMetadata.getEntityName());
if (GeodatabaseHibernate.logger.isDebugEnabled()) {
GeodatabaseHibernate.logger.debug("entity name = " + className);
}
Metadata metadataElt = new Metadata();
metadataElt.setClassName(className);
String[] propertyNames = classMetadata.getPropertyNames();
if (GeodatabaseHibernate.logger.isDebugEnabled()) {
for (int i = 0; i < propertyNames.length; i++) {
GeodatabaseHibernate.logger.debug("property name " + i + " = " + propertyNames[i]);
}
}
if (classMetadata instanceof AbstractEntityPersister) {
metadataElt.setTableName(((AbstractEntityPersister) classMetadata).getRootTableName());
metadataElt.setIdFieldName(((AbstractEntityPersister) classMetadata).getIdentifierPropertyName());
metadataElt.setIdColumnName(((AbstractEntityPersister) classMetadata).getIdentifierColumnNames()[0]);
// FIXME a revoir: aussi l'enveloppe, les srid, la dimension, et
// d'autres...
metadataElt.setGeomColumnName("geom");
if (GeodatabaseHibernate.logger.isDebugEnabled()) {
GeodatabaseHibernate.logger.debug("table name = " + metadataElt.getTableName());
GeodatabaseHibernate.logger.debug("id field name = " + metadataElt.getIdFieldName());
GeodatabaseHibernate.logger.debug("id column name = " + metadataElt.getIdColumnName());
}
}
this.metadataList.add(metadataElt);
}
}
项目:breeze.server.java
文件:HibernateMetadata.java
/**
* Gets the properties matching the given columns. May be a component, but will not be an association.
* @param persister
* @param columnNames
* @return
*/
static String[] getPropertyNamesForColumns(AbstractEntityPersister persister, String[] columnNames) {
String[] propNames = persister.getPropertyNames();
Type[] propTypes = persister.getPropertyTypes();
for (int i = 0; i < propNames.length; i++) {
String propName = propNames[i];
Type propType = propTypes[i];
if (propType.isAssociationType()) continue;
String[] columnArray = persister.getPropertyColumnNames(i);
if (namesEqual(columnArray, columnNames)) return new String[] { propName };
}
// If we got here, maybe the property is the identifier
String[] keyColumnArray = persister.getKeyColumnNames();
if (namesEqual(keyColumnArray, columnNames))
{
if (persister.getIdentifierPropertyName() != null)
{
return new String[] { persister.getIdentifierPropertyName() };
}
if (persister.getIdentifierType().isComponentType())
{
ComponentType compType = (ComponentType) persister.getIdentifierType();
return compType.getPropertyNames();
}
}
if (columnNames.length > 1)
{
// go one-by-one through columnNames, trying to find a matching property.
// TODO: maybe this should split columnNames into all possible combinations of ordered subsets, and try those
ArrayList<String> propList = new ArrayList<String>();
String[] prop = new String[1];
for (int i = 0; i < columnNames.length; i++)
{
prop[0] = columnNames[i];
String[] names = getPropertyNamesForColumns(persister, prop); // recursive call
if (names != null) propList.addAll(Arrays.asList(names));
}
if (propList.size() > 0) return (String[]) propList.toArray();
}
return null;
}
项目:dockyard-controller
文件:MetadataBuilder.java
/**
* Add the metadata for an entity.
* @param meta
*/
void addClass(ClassMetadata meta) {
Class type = meta.getMappedClass();
String classKey = getEntityTypeName(type);
HashMap<String, Object> cmap = new LinkedHashMap<String, Object>();
typeList.add(cmap);
cmap.put("shortName", type.getSimpleName());
cmap.put("namespace", type.getPackage().getName());
if (meta instanceof AbstractEntityPersister) {
AbstractEntityPersister entityPersister = (AbstractEntityPersister) meta;
String superClassEntityName = entityPersister.getMappedSuperclass();
if (superClassEntityName != null) {
Class superType = this.sessionFactory.getClassMetadata(superClassEntityName).getMappedClass();
String baseTypeName = this.getEntityTypeName(superType);
cmap.put("baseTypeName", baseTypeName);
}
IdentifierGenerator generator = entityPersister != null ? entityPersister.getIdentifierGenerator() : null;
if (generator != null) {
String genType = null;
if (generator instanceof IdentityGenerator)
genType = "Identity";
else if (generator instanceof Assigned)
genType = "None";
else
genType = "KeyGenerator";
cmap.put("autoGeneratedKeyType", genType); // TODO find the real generator
}
}
String resourceName = pluralize(type.getSimpleName()); // TODO find the real name
cmap.put("defaultResourceName", resourceName);
resourceMap.put(resourceName, classKey);
ArrayList<HashMap<String, Object>> dataArrayList = new ArrayList<HashMap<String, Object>>();
cmap.put("dataProperties", dataArrayList);
ArrayList<HashMap<String, Object>> navArrayList = new ArrayList<HashMap<String, Object>>();
cmap.put("navigationProperties", navArrayList);
try {
this.addClassProperties(meta, dataArrayList, navArrayList);
} catch (Exception e) {
e.printStackTrace();
}
}