2015-02-23 38 views
0

我有關於在Java Spring中獲取某些特定列的問題。
我正在使用Java Spring Boot和GraphDB作爲我的數據庫,並使用Model和Repository訪問數據庫(例如:我有userRepository,並使用userRepository.FindAll,並且所有記錄都在其所有字段中加載)。
舉例來說,我有一個列/字段的表:如何使用Neo4j從存儲庫獲取特定列

@NodeEntity 
public class User { 
    @GraphId 
    Long id; 

    @NotNull 
    @Indexed(unique=true) 
    private String username; 

    @NotNull 
    private String password; 

    @NotNull 
    private String firstName; 

    @NotNull 
    private String lastName; 

    @NotNull 
    private String role; 

    @NotNull 
    private Boolean active; 

    public User() { 

    } 

    public User(String username, String password, String firstName, 
      String lastName, String role, Boolean active) { 
     super(); 
     this.username = username; 
     this.password = password; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.role = role; 
     this.active = active; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String getRole() { 
     return role; 
    } 

    public void setRole(String role) { 
     this.role = role; 
    } 

    public Boolean getActive() { 
     return active; 
    } 

    public void setActive(Boolean active) { 
     this.active = active; 
    } 
} 

隨着存儲庫這樣的:

public interface UserRepository extends GraphRepository<User> { 

} 

我沒有把UserRepository.FindAll,因爲它已經實現了它GraphRepository

我不需要加載「密碼」字段。我應該如何在不加載「密碼」字段的情況下加載記錄?

回答

1

使用一類具有@QueryResult

註釋在UserRepository接口:

@Query("MATCH (u:USER) RETURN u.username as username, u.role as role") 
List<UserSimple> findAllSimple(); 

http://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference_programming-model_mapresult

編輯:(答案在評論問題)

用@QueryResult註釋的這些類可以很容易地成爲內部類,它真的取決於您。

要返回圖形ID,請在return子句中使用ID(u) as id

+0

你說我需要用@QueryResult創建類。據我所知,1類= 1文件類。如果我需要很多這樣的查詢,我是否必須創建許多文件? – 2015-02-24 03:59:00

+0

我可以通過ID嗎? @Query(「MATCH(u:USER)RETURN u.id as id,u.username as username,u.role as role」) 我無法獲取ID – 2015-02-24 07:27:22

+0

我已經編輯了我的答案和其他信息。 – 2015-02-24 08:30:26

相關問題