如何修复 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)