내가 가진 :JDO, org.json.simple.JSONObject과 PostgreSQL JSON 형식
CREATE TABLE category (
// ...
category_name_localization JSON not null,
);
자바에서, 나는 JDO 클래스과 같이 있습니다
@javax.jdo.annotations.PersistenceCapable(table = "category")
public class Category extends _BlueEntity implements Serializable {
//...
private org.json.simple.JSONObject category_name_localization;
@javax.jdo.annotations.Column(name = "category_name_localization")
public org.json.simple.JSONObject getCategoryNameLocalization() {
return category_name_localization;
}
}
언제
이org.datanucleus.exceptions.NucleusUserException: Field "com.advantagegroup.blue.ui.entity.Category.category_name_localization" is a map that has been specified without a join table and neither the key nor the value has a mapped-by specified. This is invalid!
at org.datanucleus.store.rdbms.RDBMSStoreManager.newJoinTable(RDBMSStoreManager.java:2720)
at org.datanucleus.store.rdbms.mapping.java.AbstractContainerMapping.initialize(AbstractContainerMapping.java:82)
at org.datanucleus.store.rdbms.mapping.MappingManagerImpl.getMapping(MappingManagerImpl.java:680)
at org.datanucleus.store.rdbms.table.ClassTable.manageMembers(ClassTable.java:518)
at org.datanucleus.store.rdbms.table.ClassTable.manageClass(ClassTable.java:424)
at org.datanucleus.store.rdbms.table.ClassTable.initializeForClass(ClassTable.java:1250)
at org.datanucleus.store.rdbms.table.ClassTable.initialize(ClassTable.java:271)
at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.initializeClassTables(RDBMSStoreManager.java:3288)
at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.run(RDBMSStoreManager.java:2897)
at org.datanucleus.store.rdbms.AbstractSchemaTransaction.execute(AbstractSchemaTransaction.java:118)
at org.datanucleus.store.rdbms.RDBMSStoreManager.manageClasses(RDBMSStoreManager.java:1637)
at org.datanucleus.store.rdbms.RDBMSStoreManager.getDatastoreClass(RDBMSStoreManager.java:665)
at org.datanucleus.store.rdbms.RDBMSStoreManager.getPropertiesForGenerator(RDBMSStoreManager.java:2098)
at org.datanucleus.store.AbstractStoreManager.getStrategyValue(AbstractStoreManager.java:1278)
at org.datanucleus.ExecutionContextImpl.newObjectId(ExecutionContextImpl.java:3668)
at org.datanucleus.state.StateManagerImpl.setIdentity(StateManagerImpl.java:2276)
at org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:482)
at org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:122)
at org.datanucleus.state.ObjectProviderFactoryImpl.newForPersistentNew(ObjectProviderFactoryImpl.java:218)
at org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:1986)
at org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1830)
at org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1685)
at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:712)
at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:738)
at com.advantagegroup.blue.ui.jdo._BlueJdo.insert(_BlueJdo.java:40)
at ...
이 오류는 org.json.simple.JSONObject
전 때문에 방법으로 의미가 있습니다 :이 클래스를 사용, DataNucleus 다음과 같은 예외가 있습니다 는 Map
입니다. 그러나,이 필드는 어떤 관계의 일부가 아닙니다 - 그것은 유형 JSON
이며 따라서 내가 진정과는 String
것 org.json.simple.JSONObject
같은 방법으로 치료하는 JDO/DataNucleus을 어떻게 알 수 있습니까 JSONObject
그것을 다시 자연 또는 Date
?
감사합니다! DC
인식 할 수없는 유형이므로 JDO "AttributeConverter"를 제공 할 생각이 있습니까? –
나는 이것을 시도했지만 변환기를 사용하더라도 DataNucleus는 여전히 관련 테이블을 찾고있다. 문제는 필드를 저장할 수 없다는 것이 아닙니다. 문제는 JDO가 자동으로 필드가 다 대다 매핑의 일부라고 생각한다는 것이다. 나는이 필드가 다른 클래스/테이블에 매핑되어 있지 않다는 것을 JDO에 알리는 방법을 알 수 없다. –
질문에 게시 하시겠습니까? 스택 추적을 게시하면 코드를 아는 사람이 누구인지 알 수 있습니다. –