JPA @JoinColumn 自定义对象类型

JPA @JoinColumn custom object type

我正在研究一个使用 JPA 的项目,我对此很陌生。我遇到了一个我不太理解的逻辑。我有一个名为 A 的实体,它具有 field/column:

@Column(name = "COD_UOP_COO")
    private String codUopCoo;

然后我有,在同一个实体中:

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "COD_UOP_COO", referencedColumnName = "COD_UOP")
    @BatchFetch(value = BatchFetchType.JOIN)
    private B b;

据我了解,这意味着 b 字段是通过在 JoinColumn 中指定的字段上加入 tables AB 来检索的] 注释对吧?但是在这种情况下连接是如何工作的呢? JPA 是否正在检索连接子句右侧的实体?
然后我有这个命名查询:

"select a from A a where (a.b.bfield = :parameter)"

这是什么意思?他们为什么要在实体 B 的字段上检查相等性?在我的 table A 中,我没有任何列是 B 的外键。 b 字段不是 table A 中的列。那么我要检查 A 的哪一列值?我缺少具有数据库结构的 link。

JPQL 查询被翻译成 SQL 查询。

此查询 return A 对象,其中 A.COD_UOP_COO = B.COD_UOP 和 B.bfield = 参数。更改 B 中元素的数据库列名称的 bfield Class.

您可以看到本机查询将此参数添加到 persistence.xml:

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>