У меня есть объект со встроенными членами, который я делаю постоянно без проблем с помощью СУБД и 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 НЕ поддерживает встроенные объекты? Почему у моих внедренных объектов требуется идентификация приложения? Если я определяю их с идентификатором приложения, мне также предлагается предоставить ключ, и я не хочу этого, я хочу, чтобы они были встроены.
Любая помощь будет очень признательна!
Ой, спасибо в любом случае. Я не в состоянии спонсировать работу, но я попытаюсь взглянуть на плагин ... не задерживайте дыхание: D – MartinMarco
@MartinMarco, когда вы смотрите на плагин, убедитесь, что вы смотрите на код соединительной линии SVN а не только выпущенная версия ... SVN-код имел несколько изменений со времени последней версии (хотя и не для встроенных объектов) – DataNucleus