fixes for cypher-parameter queries

This commit is contained in:
Michael Hunger
2011-10-22 00:13:19 +02:00
parent 5759f0780f
commit 63a7d2a8e0
6 changed files with 10 additions and 9 deletions

View File

@@ -57,7 +57,7 @@ public class MovieController {
@RequestMapping(value = "/movies/{movieId}", method = RequestMethod.GET, headers = "Accept=text/html")
public String singleMovieView(final Model model, @PathVariable String movieId) {
User user = addUser(model);
MovieRepository.MovieData movieData = moviesRepository.getMovieData(Long.valueOf(movieId));
MovieRepository.MovieData movieData = moviesRepository.getMovieData(movieId);
model.addAttribute("id", movieId);
if (movieData != null) {
Movie movie = movieData.getMovie();

View File

@@ -13,8 +13,8 @@ import org.springframework.data.neo4j.repository.NamedIndexRepository;
*/
public interface MovieRepository extends GraphRepository<Movie>, NamedIndexRepository<Movie> {
@Query("START movie=node({0}) MATCH movie-[rating?:rating]->() RETURN movie, AVG(rating)")
MovieData getMovieData(Long movieId);
@Query("START movie=node:Movie(id={_0}) MATCH movie-[rating?:rating]->() RETURN movie, AVG(rating)")
MovieData getMovieData(String movieId);
@MapResult
interface MovieData {

View File

@@ -60,7 +60,7 @@ public class CineastsRepository {
return movieRecommendations.getRecommendationsFor(user);
}
public MovieRepository.MovieData getMovieData(Long movieId) {
public MovieRepository.MovieData getMovieData(String movieId) {
return movieRepository.getMovieData(movieId);
}
}

View File

@@ -36,7 +36,7 @@ public class DatabasePopulator {
User me = new User("micha", "Micha", "password", User.Roles.ROLE_ADMIN,User.Roles.ROLE_USER).persist();
User ollie = new User("ollie", "Olliver", "password",User.Roles.ROLE_USER).persist();
me.addFriend(ollie);
List<Integer> ids = asList(19995 , 194, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 13, 20526, 11, 1893, 1892, 1894, 168, 193, 200, 157, 152, 201, 154, 12155, 58, 285, 118, 22, 392, 5255, 568, 9800, 497, 101, 120, 121, 122);
List<Integer> ids = asList(19995 , 194, 600, 601, 602, 603); //, 604, 605, 606, 607, 608, 609, 13, 20526, 11, 1893, 1892, 1894, 168, 193, 200, 157, 152, 201, 154, 12155, 58, 285, 118, 22, 392, 5255, 568, 9800, 497, 101, 120, 121, 122);
List<Movie> result=new ArrayList<Movie>(ids.size());
for (Integer id : ids) {
result.add(importService.importMovie(String.valueOf(id)));

View File

@@ -28,6 +28,7 @@ import org.springframework.data.neo4j.annotation.QueryType;
import org.springframework.data.neo4j.mapping.Neo4jPersistentEntity;
import org.springframework.data.neo4j.mapping.Neo4jPersistentProperty;
import org.springframework.data.neo4j.repository.query.DerivedCypherRepositoryQuery;
import org.springframework.data.neo4j.repository.query.QueryTemplates;
import org.springframework.data.neo4j.support.GenericTypeExtractor;
import org.springframework.data.neo4j.support.Neo4jTemplate;
import org.springframework.data.neo4j.support.query.CypherQueryExecutor;
@@ -187,7 +188,7 @@ public class GraphRepositoryFactory extends RepositoryFactorySupport {
final Object value = parameters[parameter.getIndex()];
final String parameterName = parameter.getName();
if (parameterName != null) params.put(parameterName, resolveParameter(value, template));
else params.put(String.valueOf(parameter.getIndex()), resolveParameter(value, template));
else params.put(String.format(QueryTemplates.PARAMETER, parameter.getIndex()), resolveParameter(value, template));
}
return params;
}

View File

@@ -23,11 +23,11 @@ import org.springframework.data.neo4j.mapping.RelationshipInfo;
*
* @author Oliver Gierke
*/
abstract class QueryTemplates {
public abstract class QueryTemplates {
static final String PARAMETER = "_%d";
public static final String PARAMETER = "_%d";
private static final String PLACEHOLDER = String.format("{%s}", PARAMETER);
public static final String PLACEHOLDER = String.format("{%s}", PARAMETER);
private static final String DIRECTION_INCOMING = "<-[:%s]-";
private static final String DIRECTION_OUTGOING = "-[:%s]->";
private static final String DIRECTION_BOTH = "-[:%s]-";