starter data neo4j spring-data spring-data-neo4j

spring boot starter data neo4j



Cómo CRUD @RelationshipEntity en SDN 4.0 (2)

MicTech tiene razón.

Una RelaciónEntidad está representada por un borde en el gráfico, no en un nodo, y actualmente las implementaciones del Repositorio son aplicables solo para objetos que pueden persistir como nodos. Esto no debería causarte ningún problema.

El OGM persistirá en todos los objetos accesibles desde el que guarde explícitamente (a menos que le diga que no lo haga). Este comportamiento significa que los bordes entre los objetos conectados se crean / actualizan automáticamente cada vez que guarde un NodeEntity, independientemente de si esos bordes están explícitamente representados por un RelationshipEntity o implícitamente por referencias directas entre instancias de NodeEntity.

El objeto de sesión de OGM es un poco menos restrictivo que cuando usa los métodos de repositorio de SDN porque puede invocar

session.save(...)

en un objeto anotado como RelationshipEntity, y hará lo que usted espera. Pero, en realidad, no es necesario hacer esto: guardar el nodo inicial o final de RelationshipEntity asegurará que el gráfico se mantenga correctamente.

Si tengo una entidad de relación rica, por ejemplo

@NodeEntity public class Actor { Long id; private Role playedIn; } @RelationshipEntity(type="PLAYED_IN") public class Role { @GraphId private Long relationshipId; @Property private String title; @StartNode private Actor actor; @EndNode private Movie movie; } @NodeEntity public class Movie { private Long id; private String title; }

Para CRUD tanto @NodeEntity , simplemente cree un @Repository cada uno, por ejemplo

@Repository public interface ActorRepository extends GraphRepository<Actor>{ }

hacer CRUD son simplemente

@Autowired ActorRepository actorRepository actorRepository.save(new Actor(....))

Mi pregunta es, ¿cómo hacemos CRUD para el Role @RelationshipEntity ?

¿ @Repository un @Repository para Role ? (Lo intenté, no está funcionando)


SDN hace CRUD para @RelationshipEntity automáticamente, porque no puede almacenar la relación en Neo4j sin el nodo de inicio y final.