如何修复 and/or 优化 spring jpa 查询方法的实现?
How to fix and/or optimize this implementation of spring jpa query method?
我正在尝试从定义为 ManyToOne 关系的 JoinColumn 的关键字段实现 jpa 查询方法。
这是我正在使用的应用程序的一部分,使用 Spring 5 和 Jpa 2.1 版本使用 Maven 构建。
模式的预期行为:"A"实体(主键=a_id)必须由"B"实体(主键=b_id)拥有,其中B可以在A中拥有多个条目。从数据库的角度来看,我需要将外键b_id存储在A实体中,而不是相反。
class A {
@id
Long a_id;
@ManyToOne(optional = false)
B b;
}
class B {
@id
Long b_id;
@OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)
@Transient
private Set<Jobs> jobs;
}
//我可以对这个模型做任何更正或简化吗?
//现在我正在尝试提取所有具有特定b_id //使用查询方法的A条目
ARepository extends JpaRepository<A, Long> {
Optional<List<A>> findByB_id(Long B_id);
}
这是我用这种方法得到的错误:
Error: Unable to locate Attribute with the the given name [B_id] on this ManagedType [<package_path>.A]
mappedBy
引用了您示例中的反向关系 b
而不是 b_id
.
所以改变
@OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)
到
@OneToMany(mappedBy = "b", cascade = CascadeType.ALL)
我正在尝试从定义为 ManyToOne 关系的 JoinColumn 的关键字段实现 jpa 查询方法。
这是我正在使用的应用程序的一部分,使用 Spring 5 和 Jpa 2.1 版本使用 Maven 构建。
模式的预期行为:"A"实体(主键=a_id)必须由"B"实体(主键=b_id)拥有,其中B可以在A中拥有多个条目。从数据库的角度来看,我需要将外键b_id存储在A实体中,而不是相反。
class A {
@id
Long a_id;
@ManyToOne(optional = false)
B b;
}
class B {
@id
Long b_id;
@OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)
@Transient
private Set<Jobs> jobs;
}
//我可以对这个模型做任何更正或简化吗?
//现在我正在尝试提取所有具有特定b_id //使用查询方法的A条目
ARepository extends JpaRepository<A, Long> {
Optional<List<A>> findByB_id(Long B_id);
}
这是我用这种方法得到的错误:
Error: Unable to locate Attribute with the the given name [B_id] on this ManagedType [<package_path>.A]
mappedBy
引用了您示例中的反向关系 b
而不是 b_id
.
所以改变
@OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)
到
@OneToMany(mappedBy = "b", cascade = CascadeType.ALL)