我希望像查询NodeEntity一样查询RelationshipEntity。
软件包信息:
groupId=org.springframework.data
artifactId=spring-data-neo4j
version=5.1.5.RELEASE
@NodeEntity("Employee")
public class Employee{
@Id
@GeneratedValue
Long id;
String name;
// Id
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
// Name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Relationship(type = STARTED, direction = Relationship.OUTGOING)
private List<Status> starts = new ArrayList<>();
@Relationship(type = PAUSED, direction = Relationship.OUTGOING)
private List<Status> pause = new ArrayList<>();
@Relationship(type = STOPED, direction = Relationship.OUTGOING)
private List<Status> stops = new ArrayList<>();
@Relationship(type = COMPLETED, direction = Relationship.OUTGOING)
private List<Status> action = new ArrayList<>();
// Default Relationship
@Relationship(type = ACTION, direction = Relationship.OUTGOING)
private List<Status> action = new ArrayList<>();
}
@NodeEntity("Project")
public class Project{
@Id
@GeneratedValue
Long id;
String name;
// Id
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
// Name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@RelationshipEntity
public class Status {
@Id
@GeneratedValue
Long id;
String name;
// Id
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
// Name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@StartNode
private Employee employee;
@EndNode
private Project project;
}
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
Employee findByName(String name);
@Query("MATCH (e:Employee)-[r]->(p:Project) WHERE e.name={empName} AND p.name={prjName} RETURN e ")
Employee getEmployeeWorkingOnProjectId(@Param("empName") String empName, @Param("prjName") String prjName);
}
此存储库不工作。
getEmployeeWorkingOnProject(String,String)返回NULL
我在return
关键字之后进行了修改,例如将其从return*
修改为像returnee、r、p
这样的别名,并且还尝试更改了返回中别名的顺序。
我希望获得与特定员工和特定项目相关联的所有状态(边缘)。
public interface StatusRepository extends CrudRepository<Status, Long> {
@Query("MATCH (e:Employee)-[r]->(p:Project) WHERE e.name={empName} AND p.name={prjName} RETURN * ")
Status getEmployeeWorkingOnProject(@Param("empName") String empName, @Param("prjName") String prjName);
/* OR
@Query("MATCH (e:Employee)-[r]->(p:Project) WHERE e.name={empName} AND p.name={prjName} AND r.name={statusName} RETURN * ")
Status getEmployeeWorkingOnProject(@Param("empName") String empName, @Param("prjName") String prjName, @Param("statusName") String statusName)
*/
}
{
Status: {
name: ..,
Employee: {
...
},
Project: {
...
}
}
},
{
Status: {
name: ..,
Employee: {
...
},
Project: {
...
}
}
},
..
或
STARTED : {
Employee: {
...
},
Project: {
...
}
},
STOPPED : {
Employee: {
...
},
Project: {
...
}
},
或其他类型的类似结果,其中关系实体持有两个连接节点。
在从下面提到的Employee
(model/entity)中移除特定代码后,我能够使StatusRepository
工作:
@Relationship(type = STARTED, direction = Relationship.OUTGOING)
private List<Status> starts = new ArrayList<>();
@Relationship(type = PAUSED, direction = Relationship.OUTGOING)
private List<Status> pause = new ArrayList<>();
@Relationship(type = STOPED, direction = Relationship.OUTGOING)
private List<Status> stops = new ArrayList<>();
@Relationship(type = COMPLETED, direction = Relationship.OUTGOING)
private List<Status> action = new ArrayList<>();
// Default Relationship
@Relationship(type = ACTION, direction = Relationship.OUTGOING)
private List<Status> action = new ArrayList<>();
保存“我的实体”时,通过关系工作的子实体不会保存到它们的表中。我不明白怎么回事。 员工: EmployeePhoneNumber: 如何设置这些字段,然后保存实体: 在完成该方法后,我没有一个错误,所有的工作都是正确的,只是表格没有填满--为什么?
我对关系如何在实体中工作以及这对我的JPA存储库意味着什么感到困惑。 我有一个名为Loan的类,它为每个贷款存储一个专辑列表。 我有一个贷款库和一个专辑库。当我启动应用程序时,相册存储库中充满了相册。该专辑是自动生成的。 我也很困惑为什么专辑必须引用带有ManyToOne注释的贷款。为什么相册必须提到贷款? 我大多习惯于关系数据库,所以也许我在以错误的方式思考事情。如果我只能添加新的专辑到贷款,那
此代码崩溃: 原因:组织。postgresql。util。PSQLException:错误:关系“订阅”不存在 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect Springjpa。数据库平台=组织。冬眠地方话PostgreSQL10方言Spring。jpa。冬眠ddl auto=创建拖放
本章将向您介绍实体之间的关系。 通常,关系在数据库中的表之间更有效。 这里实体类被视为关系表(JPA的概念),因此实体类之间的关系如下: @ManyToOne关系 @OneToMany关系 @OneToOne关系 @ManyToMany关系 @ManyToOne关系 实体之间的多对一关系:其中一个实体(列或列集)被包含唯一值的另一个实体(列或列集)引用。 在关系数据库中,通过在表之间使用外键/主键
我正在将nTier架构迁移到六边形架构中。我的域现在定义得很好,我有所有基础设施依赖项的接口。查看数据库存储库,我有几个数据库,在下面的一侧有一个类实现每个repo。我的问题是关于数据库依赖项的正确方法是什么: 1-在域端有一个接口来处理数据访问,然后依赖于基础设施实现,并有一个类作为所有数据库存储库的入口点,就像一个facade,从那里调用所有存储库实现。这种方法与我在nTier应用程序中已经使
我有2个实体(我删除了无用的字段): 而且 这似乎符合我的情况(也是我当前的实现),但它不起作用。 我得到以下错误消息: 来自MySQL: 临时解决方案是从存储库中检索所有相应的权限(按permissionName搜索)。那么保存效果很好。逻辑上是正确的,但我希望有一个更简单的程序...