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 A
和 B
来检索的] 注释对吧?但是在这种情况下连接是如何工作的呢? 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"/>
我正在研究一个使用 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 A
和 B
来检索的] 注释对吧?但是在这种情况下连接是如何工作的呢? 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"/>