如何修复和/或优化spring-jpa查询方法的实现



我正试图从定义为ManyToOne关系的JoinColumn的键字段实现jpa查询方法。

这是我正在使用的应用程序的一部分,该应用程序使用Spring5和Jpa2.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)

相关内容

  • 没有找到相关文章

最新更新