2013-03-31 1 views
1

다음 tutorial here 다음Neo4J 봄 relateTo 기능은 해결할 수없는 다음 클래스 감안할 때

public Rating rate(Movie movie, int stars, String comment) { 
      return relateTo(movie, Rating.class, RATED).rate(stars, comment); 
     } 

:

package com.example.model; 

import java.util.Collection; 
import java.util.Set; 

import org.neo4j.graphdb.Direction; 
import org.neo4j.helpers.collection.IteratorUtil; 
import org.springframework.data.neo4j.annotation.Indexed; 
import org.springframework.data.neo4j.annotation.NodeEntity; 
import org.springframework.data.neo4j.annotation.RelatedTo; 
import org.springframework.data.neo4j.annotation.RelatedToVia; 
import org.springframework.security.core.GrantedAuthority; 

@NodeEntity 
public class User { 
    private static final String SALT = "cewuiqwzie"; 
    public static final String FRIEND = "FRIEND"; 
    public static final String RATED = "RATED"; 
    @Indexed 
    String login; 
    String name; 
    String password; 
    String info; 
    private Roles[] roles; 

    public User() { 
    } 

    public User(String login, String name, String password, Roles... roles) { 
     this.login = login; 
     this.name = name; 
     this.password = encode(password); 
     this.roles = roles; 
    } 

    private String encode(String password) { 
     return ""; 
     // return new Md5PasswordEncoder().encodePassword(password, SALT); 
    } 

    @RelatedToVia(elementClass = Rating.class, type = RATED) 
    Iterable<Rating> ratings; 

    @RelatedTo(elementClass = Movie.class, type = RATED) 
    Set<Movie> favorites; 

    @RelatedTo(elementClass = User.class, type = FRIEND, direction = Direction.BOTH) 
    Set<User> friends; 

    public void addFriend(User friend) { 
     this.friends.add(friend); 
    } 

    public Rating rate(Movie movie, int stars, String comment) { 
     return relateTo(movie, Rating.class, RATED).rate(stars, comment); 
    } 

    public Collection<Rating> getRatings() { 
     return IteratorUtil.asCollection(ratings); 
    } 

    @Override 
    public String toString() { 
     return String.format("%s (%s)", name, login); 
    } 

    public String getName() { 
     return name; 
    } 

    public Set<User> getFriends() { 
     return friends; 
    } 

    public Roles[] getRole() { 
     return roles; 
    } 

    public String getLogin() { 
     return login; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public String getInfo() { 
     return info; 
    } 

    public void setInfo(String info) { 
     this.info = info; 
    } 

    public void updatePassword(String old, String newPass1, String newPass2) { 
     if (!password.equals(encode(old))) 
      throw new IllegalArgumentException("Existing Password invalid"); 
     if (!newPass1.equals(newPass2)) 
      throw new IllegalArgumentException("New Passwords don't match"); 
     this.password = encode(newPass1); 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public boolean isFriend(User other) { 
     return other != null && getFriends().contains(other); 
    } 

    public enum Roles implements GrantedAuthority { 
     ROLE_USER, ROLE_ADMIN; 

     @Override 
     public String getAuthority() { 
      return name(); 
     } 
    } 
} 

내가 컴파일 여기에 예외가. 이 기능의 위치에 대한 통찰력은 인정됩니다.

답변

4

고급 매핑 모드를 사용하려고합니다. 자세한 내용은 reference manual을 참조하십시오. IDE에서 AspectJ 지원을 설정해야한다. 컴파일 타임에 메서드가 엔티티 클래스에 포함됩니다.

관련 문제