java neo4j repository-pattern spring-data-neo4j

java - "No se encontraron propiedades para el tipo" combinando repositorios spring-data-neo4j



repository-pattern (1)

Estoy usando spring-data-neo4j y estoy tratando de combinar repositorios para poder usar los personalizados. Creo que he seguido correctamente las convenciones de nomenclatura especificadas en 20.8.7 Creación de repositorios y otras preguntas de SO como esta .

De todos modos, estoy haciendo algo mal porque estoy recibiendo esto

mensaje de excepción

Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property someCriteria found for type User!

Entidad de usuario

@NodeEntity public class User { @GraphId private Long nodeId; @Indexed String mail; ... }

Repositorios (todos en el mismo paquete)

@Repository public interface UserRepository extends GraphRepository<User>, UserRepositoryCustom { User findByMail(String mail); } public interface UserRepositoryCustom { String findBySomeCriteria(String criteria); } public class UserRespositoryImpl implements UserRepositoryCustom { @Override public String findBySomeCriteria(String criteria) { return "result"; } }

servicios

@Service public class UserServiceImpl implements UserService { @Autowired UserRepository userRepository; }

Configuración Neo4j

<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase"> ... </bean> <neo4j:repositories base-package="com.mypackage.api.user.repository"/> <bean id="userService" class="com.mypackage.api.user.service.UserServiceImpl"/>


En este caso, ha sido solo un estúpido error spelling .

Necesita cambiar UserRespositoryImpl por UserRepositoryImpl (sin '' s '': note UserRe s positoryImpl).

De todos modos, he estado luchando con la combinación de repositorio personalizado en spring-data-neo4j y creo que puede ser un poco confuso. También creo que hay muy pocos buenos ejemplos en línea ... Entonces, finalmente he decidido crear un proyecto de muestra en GitHub , con un ejemplo básico que muestra cómo podemos hacer eso.

Espero que ayude a otras personas en el futuro.

Ver en GitHub: neo4jCustomRepository