У меня есть таблица с полем ID, определенной таким образом:не может сохраняться Кассандре с DataNucleus на UUID
create table XXX (
id uuid primary key,
name varchar,
....
и мой класс XXX так аннотированный:
public class XXX {
@PrimaryKey
@Persistent(customValueStrategy = "uuid")
public UUID id;
...
При попытке выдать PersistenceManager .makePersistent(), я получаю:
Исключение в потоке "основного" javax.jdo.JDOFatalInternalException: недействительный идентификатор генерируется для поля XXX.id, ID: 54e5abde-732b-42ff-af92-06af89af46ff на org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException (NucleusJDOHelper.java:673) на org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent (JDOPersistenceManager.java:720) на org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent (JDOPersistenceManager.java:740) на Importer.save (StayImporter.java:84) на Importer.exec (StayImporter.java:102) на Importer.main (Импортер .java: 110) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:497) at com.intellij.rt.execution.application.AppMain.main (AppMain.java:144) NestedThrowablesStackTrace: Неверный идентификатор, сгенерированный для поля XXX .id, id: 54e5abde-732b-42ff-af92-06af89af46ff org.datanucleus.exceptions.NucleusException: Неверный идентификатор, сгенерированный для поля XXX.id, id: 54e5abde-732b-42ff-af92-06af89af46ff на org.datanucleus.store .AbstractStoreManager.getStrategyValue (AbstractStoreManager.java:1300) на org.datanucleus.state.StateManagerImpl.populateStrategyFields (StateManagerImpl.java:2201) на org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew (StateManagerImpl.java:418) в орг .datanucleus.state.StateManagerImpl.initialiseForPersistentNew (StateManage rImpl.java:120) на org.datanucleus.state.ObjectProviderFactoryImpl.newForPersistentNew (ObjectProviderFactoryImpl.java:218) на org.datanucleus.ExecutionContextImpl.persistObjectInternal (ExecutionContextImpl.java:2078) в org.datanucleus.ExecutionContextImpl.persistObjectWork (ExecutionContextImpl.java:1922) на org.datanucleus.ExecutionContextImpl.persistObject (ExecutionContextImpl.java:1777) на org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent (JDOPersistenceManager.java:715) в org.datanucleus.api. jdo.JDOPersistenceManager.makePersistent (JDOPersistenceManager.java:740)
UUID выглядит хорошо для меня, почему d oes это не работает?
Maven является:
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-accessplatform-jdo-cassandra</artifactId>
<version>4.2.1</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.9</version>
</dependency>
Cassandra версия 2.2.3
Я бы подумал, что все генераторы, как правило, основаны на строках или целых числах. Что произойдет, если вы сделаете это поле строкой? Также это не реальное исключение ... будет вложенным –
Я включил вложенное исключение –
С строковым полем я получаю: org.datanucleus.exceptions.NucleusException: Неверный идентификатор, сгенерированный для XXX.id, id: 7aa194c8 -06d2-491f-9ccb-4e52db36dd0a –