2011-12-30 2 views
1

У меня есть объект со встроенными членами, который я делаю постоянно без проблем с помощью СУБД и MySQL.Amazon S3, datanucleus, JDO и внедренные объекты

Когда я изменить хранилище данных S3 (JSON плагин) Я получаю следующее исключение:

Dec 30, 2011 9:50:30 AM org.datanucleus.state.JDOStateManagerImpl isLoaded 
WARNING: Exception thrown by StateManager.isLoaded 
This constructor is only for objects using application identity. 
org.datanucleus.exceptions.NucleusUserException: This constructor is only for objects using application identity. 
    at org.datanucleus.state.JDOStateManagerImpl.initialiseForHollowAppId(JDOStateManagerImpl.java:226) 
    at org.datanucleus.state.ObjectProviderFactory.newForHollowPopulatedAppId(ObjectProviderFactory.java:119) 
    at org.datanucleus.store.json.fieldmanager.FetchFieldManager.getObjectFromJSONObject(FetchFieldManager.java:322) 
    at org.datanucleus.store.json.fieldmanager.FetchFieldManager.fetchObjectField(FetchFieldManager.java:250) 
    at org.datanucleus.state.AbstractStateManager.replacingObjectField(AbstractStateManager.java:2228) 
    at myproject.MyObject.jdoReplaceField(Unknown Source) 
    at myproject.MyObject.jdoReplaceFields(Unknown Source) 
    at org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:1949) 
    at org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:1976) 
    at org.datanucleus.store.json.JsonPersistenceHandler.fetchObject(JsonPersistenceHandler.java:269) 
    at org.datanucleus.state.JDOStateManagerImpl.loadFieldsFromDatastore(JDOStateManagerImpl.java:1652) 
    at org.datanucleus.state.JDOStateManagerImpl.loadSpecifiedFields(JDOStateManagerImpl.java:1254) 
    at org.datanucleus.state.JDOStateManagerImpl.isLoaded(JDOStateManagerImpl.java:1742) 
    at myproject.MyObject.jdoGetmember_(Unknown Source) 
    at myproject.MyObject.getMember(Unknown Source) 

member_ в myproject.MyObject определяется как:

@Persistent 
@Embedded(members = { 
... 
}) 
private Member member_; 

и

@PersistenceCapable(detachable="true") 
@EmbeddedOnly 
public class Member implements Serializable { 

(идентификация приложения, без ключа)

jdoconfig.xml примерно:

<jdoconfig 
    xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> 
    <persistence-manager-factory name="trans-optional"> 
    <property name="javax.jdo.PersistenceManagerFactoryClass" 
       value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/> 
    <property name="datanucleus.ConnectionURL" 
       value="amazons3:http://s3.amazonaws.com/"/> 
    <property name="datanucleus.ConnectionUserName" 
       value="..."/> 
    <property name="datanucleus.ConnectionPassword" 
       value="..."/> 
    <property name="datanucleus.cloud.storage.bucket" 
       value="mybucket"/> 
    </persistence-manager-factory> 
</jdoconfig> 

Я был в Supported Features таблице, но я должен признать, что я не до конца понимаю.

Говорит ли он, что плагин json НЕ поддерживает встроенные объекты? Почему у моих внедренных объектов требуется идентификация приложения? Если я определяю их с идентификатором приложения, мне также предлагается предоставить ключ, и я не хочу этого, я хочу, чтобы они были встроены.

Любая помощь будет очень признательна!

ответ

0

Поскольку таблица поддерживаемых функций говорит очень четко (для меня), существует CROSS против столбца данных JSON для функции «Встроенный ПК», поэтому она не поддерживается для этого хранилища данных. Очевидно, что если какой-то пользователь/компания хотела такую ​​возможность они могли либо

  1. Обновить плагин в формате JSON, чтобы поддержать его, как это было сделано для ODF плагин, например
  2. Спонсор, который работает.

В качестве альтернативы, не используйте внедренные объекты с данным хранилищем данных.

+0

Ой, спасибо в любом случае. Я не в состоянии спонсировать работу, но я попытаюсь взглянуть на плагин ... не задерживайте дыхание: D – MartinMarco

+0

@MartinMarco, когда вы смотрите на плагин, убедитесь, что вы смотрите на код соединительной линии SVN а не только выпущенная версия ... SVN-код имел несколько изменений со времени последней версии (хотя и не для встроенных объектов) – DataNucleus

Смежные вопросы