2016-03-19 16 views
2

Kullanıcının Roller listesinin yer alacağı ve Rollerin bir İzinler listesine sahip olduğu bir modelim var. Ancak, hepsini bir kerede sakladığımda bile - derinlik -1 ile alt düğümlerden alt düğümleri alamıyorum. ex: user.getRoles() - 2 [role1, role2] role1.getAssociatedFeature() - 0 Örneği'nden Rol alırsam: findByRoleName ('role1') -> [Rol: role1, Display Rol, associatedFeatures [2]]Yay verileri kullanılarak neo4j'de yuvalanmış nesneler nasıl kaydedilir ve alınır

User.java

@NodeEntity 
public class User { 

@GraphId Long id; 
private String name; 
private String loginUserName; 

@Relationship(type="ROLE") 
private Set<Role> associatedRoles = new HashSet<Role>(); 

} Role.java

I CRUD işlemleri kullanımı Yay veri JPA kullanıyorum
@NodeEntity 
public class Role { 

    @GraphId Long id; 
    private String roleName; 
    private String displayRoleName; 
    @Relationship(type="ACCESS_TO") 
    private Set<Feature> associatedFeatures = new HashSet<Feature>(); 
} 
Feature.java 
@NodeEntity 
public class Feature { 
    @GraphId Long id; 
    private String featureName; 
    @Relationship(type="HAS_PERMISSION") 
    private Set<Permission> permissions = new HashSet<Permission>(); 
} 
@NodeEntity 
public @Data class Permission { 
    @GraphId 
    Long id; 
    String permission; 
} 

: <> Repository.java - Bu, silme, kaydetme güncelleştirme uygulamak bydefault Yeni Kullanıcı varlık yaratarak ve izni verileri tüm yol doldurma ediyorum benim Junit- yılında

@RepositoryRestResource() 
public interface RoleRepository extends GraphRepository<Role>{...} 

ServiceImpl.java 
    @Override 
     public User create(User u) { 
      return userRepo.save(u,-1); 
     } 

bulacaksınız. Ancak kullanıcıyı getirdiğimde -> sadece rolleri alırım, ancak özellikleri zincir boyunca izin vermez.

Neo4j DB tarayıcısında, tüm düğümlerin uygun bağımlılıkla oluşturulduğunu görüyorum. Grafikte nasıl kaydedileceğini ve nasıl hareket edeceğini gösteren işaretçiler var mı?

cevap

2

Varsayılan yükleme derinliği 1'dir. Bu, kullanıcının rolünü ve ilişkili rolleri elde edeceğiniz anlamına gelir, ancak rolün özelliklerini veya grafiğin daha derin bir bölümünü kullanmazsınız. Varsayılan değilse

zaman istediklerine yük derinliğini belirtebilirsiniz:

userRepo.findOne(user.getId(), 3);

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

+1

Teşekkür Vince !! İşe yaradı. "-1" derinliğiyle tasarruf ediyordum - herşeyi kurtardım - ancak alma sırasında özel Bul (findByName) kullanıyordum ve GraphRepository'de tanımlanan değil ve varsayılan yük derinliğini kullanmak için kullanıyordum. Bir cevabı belirtmek için yeterli puanın yok, bu yüzden sözlü şu an için teşekkürler :) –

+0

Sorun değil. Sadece FYI, kaydetme derinliğinde -1 belirtmeye gerek yoktur - bu, kaydetmek için varsayılan derinliktir: ısrar ettiğiniz en üst düzey nesneden erişilebilen her şey. – Vince

İlgili konular