Java 类org.hibernate.ogm.model.key.spi.EntityKeyMetadata 实例源码
项目:hibernate-ogm-redis
文件:AbstractRedisDialect.java
protected void addKeyValuesFromKeyName(
EntityKeyMetadata entityKeyMetadata,
String prefix,
String key,
Entity document) {
if ( key.startsWith( prefix ) ) {
String keyWithoutPrefix = getKeyWithoutTablePrefix( prefix, key );
Map<String, Object> keys = keyStringToMap( entityKeyMetadata, keyWithoutPrefix );
for ( Map.Entry<String, Object> entry : keys.entrySet() ) {
document.set( entry.getKey(), entry.getValue() );
}
}
}
项目:hibernate-ogm-redis
文件:RedisHashDialect.java
protected void addKeyValuesFromKeyName(
EntityKeyMetadata entityKeyMetadata,
String prefix,
String key,
Map<String, String> document) {
if ( key.startsWith( prefix ) ) {
String keyWithoutPrefix = key.substring( prefix.length() );
Map<String, String> keys = keyToMap( entityKeyMetadata, keyWithoutPrefix );
for ( Map.Entry<String, String> entry : keys.entrySet() ) {
document.put( entry.getKey(), entry.getValue() );
}
}
}
项目:hibernate-ogm-ignite
文件:IgniteTupleSnapshot.java
public IgniteTupleSnapshot(Object id, BinaryObject binaryObject, EntityKeyMetadata keyMetadata) {
this.id = id;
this.binaryObject = binaryObject;
this.keyMetadata = keyMetadata;
Set<String> idColumnNames = new HashSet<>();
for ( String columnName : keyMetadata.getColumnNames() ) {
if ( keyMetadata.isKeyColumn( columnName ) ) {
idColumnNames.add( columnName );
}
}
if ( idColumnNames.isEmpty() ) {
throw new UnsupportedOperationException( "There is no id column in entity " + keyMetadata.getTable() + ". Hmm..." );
}
this.isSimpleId = idColumnNames.size() == 1;
this.columnNames = CollectionHelper.asSet( keyMetadata.getColumnNames() );
}
项目:hibernate-ogm-ignite
文件:IgniteCacheInitializer.java
private CacheConfiguration<?,?> createEntityCacheConfiguration(EntityKeyMetadata entityKeyMetadata, SchemaDefinitionContext context) {
CacheConfiguration<?,?> cacheConfiguration = new CacheConfiguration<>();
cacheConfiguration.setStoreKeepBinary( true );
cacheConfiguration.setSqlSchema( QueryUtils.DFLT_SCHEMA );
cacheConfiguration.setBackups( 1 );
cacheConfiguration.setName( StringHelper.stringBeforePoint( entityKeyMetadata.getTable() ) );
cacheConfiguration.setAtomicityMode( CacheAtomicityMode.TRANSACTIONAL );
QueryEntity queryEntity = new QueryEntity();
queryEntity.setTableName( entityKeyMetadata.getTable() );
queryEntity.setKeyType( getEntityIdClassName( entityKeyMetadata.getTable(), context ).getSimpleName() );
queryEntity.setValueType( StringHelper.stringAfterPoint( entityKeyMetadata.getTable() ) );
addTableInfo( queryEntity, context, entityKeyMetadata.getTable() );
for ( AssociationKeyMetadata associationKeyMetadata : context.getAllAssociationKeyMetadata() ) {
if ( associationKeyMetadata.getAssociationKind() != AssociationKind.EMBEDDED_COLLECTION
&& associationKeyMetadata.getTable().equals( entityKeyMetadata.getTable() )
&& !IgniteAssociationSnapshot.isThirdTableAssociation( associationKeyMetadata ) ) {
appendIndex( queryEntity, associationKeyMetadata, context );
}
}
log.debugf( "queryEntity: %s", queryEntity );
cacheConfiguration.setQueryEntities( Arrays.asList( queryEntity ) );
return cacheConfiguration;
}
项目:hibernate-ogm-redis
文件:AbstractRedisDialect.java
/**
* Deconstruct the key name into its components:
* Single key: Use the value from the key
* Multiple keys: De-serialize the JSON map.
*/
protected Map<String, Object> keyStringToMap(EntityKeyMetadata entityKeyMetadata, String key) {
if ( entityKeyMetadata.getColumnNames().length == 1 ) {
return Collections.singletonMap( entityKeyMetadata.getColumnNames()[0], (Object) key );
}
return strategy.deserialize( key, Map.class );
}
项目:hibernate-ogm-redis
文件:AbstractRedisDialect.java
/**
* Deconstruct the key name into its components:
* Single key: Use the value from the key
* Multiple keys: De-serialize the JSON map.
*/
@SuppressWarnings("unchecked")
protected Map<String, String> keyToMap(EntityKeyMetadata entityKeyMetadata, String key) {
if ( entityKeyMetadata.getColumnNames().length == 1 ) {
return Collections.singletonMap( entityKeyMetadata.getColumnNames()[0], key );
}
return strategy.deserialize( key, Map.class );
}
项目:hibernate-ogm-redis
文件:RedisJsonDialect.java
@Override
public void forEachTuple(final ModelConsumer consumer, TupleTypeContext tupleTypeContext, EntityKeyMetadata entityKeyMetadata) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";
ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );
consumer.consume( new RedisJsonDialectTuplesSupplier( cursor, entityStorageStrategy, prefix, entityKeyMetadata ) );
} while ( !cursor.isFinished() );
}
项目:hibernate-ogm-redis
文件:RedisHashDialect.java
@Override
public void forEachTuple(ModelConsumer consumer, TupleTypeContext tupleTypeContext, EntityKeyMetadata entityKeyMetadata) {
KeyScanCursor<String> cursor = null;
String prefix = entityKeyMetadata.getTable() + ":";
ScanArgs scanArgs = ScanArgs.Builder.matches( prefix + "*" );
do {
cursor = scan( cursor, scanArgs );
consumer.consume( new RedisHashDialectTuplesSupplier( cursor, connection, prefix, entityKeyMetadata ) );
} while ( !cursor.isFinished() );
}
项目:hibernate-ogm-ignite
文件:IgniteAssociationRowSnapshot.java
public IgniteAssociationRowSnapshot(Object id, BinaryObject binaryObject, AssociationKeyMetadata associationMetadata) {
this.id = id;
this.binaryObject = binaryObject;
this.associationMetadata = associationMetadata;
this.thirdTableLink = IgniteAssociationSnapshot.isThirdTableAssociation( associationMetadata );
if ( this.thirdTableLink ) {
Set<String> cn = new HashSet<>();
Collections.addAll( cn, associationMetadata.getRowKeyColumnNames() );
Collections.addAll( cn, associationMetadata.getAssociatedEntityKeyMetadata().getAssociationKeyColumns() );
this.columnNames = Collections.unmodifiableSet( cn );
this.isSimpleId = true; //vk: not used in this case
}
else {
Set<String> idColumnNames = new HashSet<>();
EntityKeyMetadata entityKeyMetadata = associationMetadata.getAssociatedEntityKeyMetadata().getEntityKeyMetadata();
for ( String columnName : entityKeyMetadata.getColumnNames() ) {
if ( entityKeyMetadata.isKeyColumn( columnName ) ) {
idColumnNames.add( columnName );
}
}
if ( idColumnNames.isEmpty() ) {
throw new UnsupportedOperationException( "There is no id column in entity " + entityKeyMetadata.getTable() + ". Hmm..." );
}
this.columnNames = CollectionHelper.asSet( entityKeyMetadata.getColumnNames() );
this.isSimpleId = idColumnNames.size() == 1;
}
}
项目:hibernate-ogm-ignite
文件:IgniteDatastoreProvider.java
/**
* Finds key type name for cache for entities with composite id
* @param keyMetadata
* @return
*/
private String findKeyType(EntityKeyMetadata keyMetadata) {
String result = compositeIdTypes.get( keyMetadata.getTable() );
if ( result == null ) {
String cacheType = getEntityTypeName( keyMetadata.getTable() );
IgniteCache<Object, BinaryObject> cache = getEntityCache( keyMetadata );
CacheConfiguration cacheConfig = cache.getConfiguration( CacheConfiguration.class );
if ( cacheConfig.getQueryEntities() != null ) {
for ( QueryEntity qe : (Collection<QueryEntity>) cacheConfig.getQueryEntities() ) {
if ( qe.getValueType() != null && cacheType.equalsIgnoreCase( qe.getValueType() ) ) {
result = qe.getKeyType();
break;
}
}
}
if ( result == null ) {
if ( cacheConfig.getKeyType() != null ) {
result = cacheConfig.getKeyType().getSimpleName();
}
if ( result == null ) {
// if nothing found we use id field name
result = StringHelper.stringBeforePoint( keyMetadata.getColumnNames()[0] );
result = StringUtils.capitalize( result );
}
}
compositeIdTypes.put( keyMetadata.getTable(), result );
}
return result;
}
项目:lightblue-hibernate-ogm
文件:LightblueEntityMetadataId.java
static LightblueEntityMetadataId extractEntityInfo(EntityKeyMetadata keyMetadata) {
Matcher entityVersionMatcher = LIGHTBLUE_TABLE_PATTERN.matcher(keyMetadata.getTable());
if (!entityVersionMatcher.matches()) {
throw new IllegalArgumentException("table does not match lightblue table format: {entityName}/{version}");
}
String entityVersion = entityVersionMatcher.group(3);
if (entityVersion == null || entityVersion.length() > 0) {
entityVersion = null;
}
return new LightblueEntityMetadataId(entityVersionMatcher.group(1), entityVersion);
}
项目:lightblue-hibernate-ogm
文件:LightblueTupleSnapshot.java
public LightblueTupleSnapshot(ObjectNode node, EntityKeyMetadata keyMetadata, OperationType operationType) {
this.node = node;
this.operationType = operationType;
LightblueEntityMetadataId metadataId = LightblueEntityMetadataId.extractEntityInfo(keyMetadata);
this.entityName = metadataId.entityName;
this.entityVersion = metadataId.entityVersion;
columnNames = findLeafNodeFieldNames("", node);
}
项目:hibernate-ogm-redis
文件:RedisJsonDialect.java
public RedisJsonDialectTuplesSupplier(KeyScanCursor<String> cursor, JsonEntityStorageStrategy storageStrategy, String prefix, EntityKeyMetadata entityKeyMetadata) {
this.cursor = cursor;
this.storageStrategy = storageStrategy;
this.prefix = prefix;
this.entityKeyMetadata = entityKeyMetadata;
}
项目:hibernate-ogm-redis
文件:RedisJsonDialect.java
public RedisJsonTupleIterator(KeyScanCursor<String> cursor, JsonEntityStorageStrategy storageStrategy, String prefix, EntityKeyMetadata entityKeyMetadata) {
this.storageStrategy = storageStrategy;
this.prefix = prefix;
this.entityKeyMetadata = entityKeyMetadata;
this.iterator = cursor.getKeys().iterator();
}
项目:hibernate-ogm-redis
文件:RedisHashDialect.java
public RedisHashDialectTuplesSupplier(KeyScanCursor<String> cursor, RedisClusterCommands<String, String> connection, String prefix, EntityKeyMetadata entityKeyMetadata) {
this.cursor = cursor;
this.connection = connection;
this.prefix = prefix;
this.entityKeyMetadata = entityKeyMetadata;
}
项目:hibernate-ogm-redis
文件:RedisHashDialect.java
public RedisHashTupleIterator(KeyScanCursor<String> cursor, RedisClusterCommands<String, String> connection, String prefix, EntityKeyMetadata entityKeyMetadata) {
this.connection = connection;
this.prefix = prefix;
this.entityKeyMetadata = entityKeyMetadata;
this.iterator = cursor.getKeys().iterator();
}
项目:hibernate-ogm-ignite
文件:IgnitePropertyHelper.java
public EntityKeyMetadata getKeyMetaData(String entityType) {
OgmEntityPersister persister = (OgmEntityPersister) getSessionFactory().getEntityPersister( entityType );
return persister.getEntityKeyMetadata();
}
项目:hibernate-ogm-ignite
文件:IgniteDatastoreProvider.java
public <K> IgniteCache<K, BinaryObject> getEntityCache(EntityKeyMetadata keyMetadata) {
String entityCacheName = getEntityCacheName( keyMetadata.getTable() );
return getCache( entityCacheName, true );
}
项目:hibernate-ogm-ignite
文件:IgniteDialect.java
@Override
public void forEachTuple(ModelConsumer consumer, TupleTypeContext tupleTypeContext, EntityKeyMetadata entityKeyMetadata) {
throw new UnsupportedOperationException( "forEachTuple() is not implemented" );
}
项目:hibernate-ogm-ignite
文件:IgniteDialect.java
public IgnitePortableFromProjectionResultCursor(Iterable<List<?>> resultCursor, RowSelection rowSelection, EntityKeyMetadata keyMetadata) {
super( resultCursor, rowSelection );
this.keyMetadata = keyMetadata;
}
项目:hibernate-ogm-ignite
文件:IgniteTestHelper.java
public static <K> IgniteCache<K, BinaryObject> getEntityCache(SessionFactory sessionFactory, EntityKeyMetadata entityKeyMetadata) {
IgniteDatastoreProvider castProvider = getProvider( sessionFactory );
return castProvider.getEntityCache( entityKeyMetadata );
}
项目:lightblue-hibernate-ogm
文件:LightblueDialect.java
@Override
public void forEachTuple(ModelConsumer consumer, EntityKeyMetadata... entityKeyMetadatas) {
throw new UnsupportedOperationException("not yet supported");
}