我有以下课程
import java.util.Set;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class Client {
@Id
@GeneratedValue
private Long id;
private String name;
@Relationship(type = "HAS_CONFIGURED", direction = Relationship.OUTGOING)
public Set<Environment> environments;
public Client () {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Environment> getEnvironments() {
return environments;
}
public void setEnvironments(Set<Environment> environments) {
this.environments = environments;
}
}
import java.util.Set;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class Environment {
@Id
@GeneratedValue
private Long id;
private String name;
@Relationship(type = "HAS_INSTALLED", direction = Relationship.OUTGOING)
public Set<Application> applications;
public Environment() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Application> getApplications() {
return applications;
}
public void setApplications(Set<Application> applications) {
this.applications = applications;
}
}
import java.util.Set;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import org.neo4j.ogm.annotation.RelationshipEntity;
@NodeEntity
public class Application {
@Id
@GeneratedValue
private Long id;
private String name;
@Relationship(type = "CAN_THROW", direction = Relationship.OUTGOING)
public Set<Error> errors;
public Application() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Error> getErrors() {
return errors;
}
public void setErrors(Set<Error> errors) {
this.errors = errors;
}
}
而且我正尝试使用Crud存储库加载所有文件
import java.util.List;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import com.nic.loganalyzer.loganalyzer.model.entity.graph.Client;
public interface ClientRepository extends Neo4jRepository<Client, Long> {
List<Client> findAllByName(String name);
}
层次结构就像Client-->Environment-->Application--Error
。问题在于它仅加载到应用程序,但是应用程序不加载环境。渴望装载吗?否则如何加载整个结构并遍历。我的遍历方式如下
List<Client> findAllByName = clientRepository.findAllByName(eventLog.getClient());
for (Client client: findAllByName) {
List<Environment> environments = client.getEnvironments().stream()
.filter(e -> e.getName().equalsIgnoreCase(eventLog.getEnvironment()))
.collect(Collectors.toList());
for (Environment environment : environments) {
List<Application> applications = environment.getApplications().stream()
.filter(e -> e.getName().equalsIgnoreCase(eventLog.getApplication()))
.collect(Collectors.toList());
for (Application application : applications) {
List<Error> errors = application.getErrors().stream()
.filter(e -> eventLog.getError().contains(e.getName()))
.collect(Collectors.toList());
据我了解,派生查找器的默认“深度”值为1。
如果要加载整个层次结构,请尝试在派生的查找器顶部添加@Depth(value = 3)。
您的方法应类似于:
@Depth(value = 3)
List<Client> findAllByName(String name);