Neo4j: ошибка для свойства отношения: значения свойства могут быть только примитивных типов или их массивов - PullRequest
0 голосов
/ 03 июня 2018

Согласно https://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#__relationship_connecting_node_entities я хочу сохранить узлы, имеющие отношение 1: 1, к другому сложному узлу.Используемая версия Neo4j: 3.2.6

Следующий вариант использования:

  • Для загруженных файлов конкретная информация об этих файлах сохраняется в Neo4j как единое целое FileHashEntity
  • Пользователи, которые загружают файлы, представлены в Neo4j как пользовательские объекты: BaseUserEntity и UserEntity
  • FileHashEntity связаны с пользователем, который изначально загрузил файл в первый раз

Классы Java, которые определяют объекты пользователя, объявляются следующим образом:

@NodeEntity
public abstract class BaseUserEntity {

    @GeneratedValue
    @Id
    private Long id;
...
}

public class UserEntity extends BaseUserEntity {

    @Id
    private String email;

    private String passwordHash;
...
}

И сущность для информации о файле выглядит следующим образом:

@NodeEntity
public class FileHashEntity {
    @DateLong
    private Date creationTime;

    @Id
    private String sha256;

...

    private long size;

    @Relationship(type = "UPLOADED_BY", direction = Relationship.OUTGOING)
    private UserEntity uploader;
...
}

Если я пытаюсь сохранитьFileHashEntity Я получаю сообщение об ошибке из-за свойства сложного объекта (UserEntity):

public interface FileHashRepository extends Neo4jRepository<FileHashEntity, String> {

    @Query(value = "merge (n:FileHashEntity {sha256: {0}}) on create set n = {1} return n")
    FileHashEntity storeIfNotExists(String sha256, FileHashEntity entity);
...
}

Caused by: org.neo4j.driver.v1.exceptions.ClientException: Property values can only be of primitive types or arrays thereof
    at org.neo4j.driver.internal.net.SocketResponseHandler.handleFailureMessage(SocketResponseHandler.java:76)

Но в документации Spring говорится, что это возможно даже без явной аннотации @Relationship (см. ссылку выше).).Я даже пытался заменить тип объявления UserEntity на BaseUserEntity.Что не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...