#java #xodus
#java #xodus
Вопрос:
Использование версии 1.3.124
Xodus и базы данных выбрасывает:
jetbrains.exodus.entitystore.EntityStoreException: Unsupported property type id 9
at jetbrains.exodus.entitystore.tables.PropertyTypes.getPropertyType(PropertyTypes.java:56)
at jetbrains.exodus.entitystore.tables.PropertyTypes.entryToPropertyValue(PropertyTypes.java:86)
at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.getPropertyValue(PersistentEntityStoreImpl.java:843)
at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.getProperty(PersistentEntityStoreImpl.java:827)
at jetbrains.exodus.entitystore.PersistentEntity.getProperty(PersistentEntity.java:114)
Несмотря на то, что свойство зарегистрировано:
@Override
public PersistentEntityStore getPersistentEntityStore(String xodusRoot, String dir, boolean isReadOnly) {
if(persistentEntityStoreCache == null) {
persistentEntityStoreCache = buildPersistentEntityStoreCache();
}
PersistentEntityStore entityStore = persistentEntityStoreCache.get(xodusRoot dir);
if (entityStore == null) {
Environment environment = getEnvironment(xodusRoot, dir);
PersistentEntityStoreConfig config = new PersistentEntityStoreConfig();
config.setManagementEnabled(false);
config.setDebugSearchForIncomingLinksOnDelete(true);
config.setRefactoringHeavyLinks(true);
entityStore = PersistentEntityStores.newInstance(config, environment, "persistentEntityStore");
PersistentEntityStore finalEntityStore = entityStore;
entityStore.executeInTransaction(
txn -> {
finalEntityStore.registerCustomPropertyType(
txn, EmbeddedEntityIterable.class, EmbeddedEntityBinding.BINDING);
finalEntityStore.registerCustomPropertyType(
txn, EmbeddedArrayIterable.class, EmbeddedEntityBinding.BINDING);
persistentEntityStoreCache.put(xodusRoot dir, finalEntityStore);
});
}
PersistentEntityStore persistentEntityStore = persistentEntityStoreCache.get(xodusRoot dir);
return persistentEntityStore;
}
И это свойство изначально было сохранено с:
metaDataHashMap.put("uniqueProperties", uProperties);
finalEntity.setProperty(metadataProperty, new EmbeddedEntityIterable(metaDataHashMap));
Что здесь может быть не так?
Ответ №1:
Я нашел основную причину проблемы.
Первоначально EmbeddedEntityIterable
is в разделе com.mybusiness.model.EmbeddedEntityIterable
then был перемещен в com.my-new-business.model.EmbeddedEntityIterable
Это решило проблему. Тем не менее, у ит-узла должно быть средство для замены или, по крайней мере, замены ссылок в подобных случаях, когда модели перемещаются.
Комментарии:
1. В моем случае проблема была вызвана тем, что я использовал пользовательские типы (using
PersistentEntityStore.registerCustomPropertyType()
) в некоторых транзакциях, но не в других.