Java JPA@JoinColumn自定义对象类型
我正在研究一个使用JPA的项目,这是我的新手。我遇到了一个我不太理解的逻辑。我有一个名为Java JPA@JoinColumn自定义对象类型,java,jpa,named-query,Java,Jpa,Named Query,我正在研究一个使用JPA的项目,这是我的新手。我遇到了一个我不太理解的逻辑。我有一个名为A的实体,它有以下字段/列: @Column(name = "COD_UOP_COO") private String codUopCoo; 那么我在同一个实体中: @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "COD_UOP_COO", referencedColumnName = "COD_UOP") @B
A
的实体,它有以下字段/列:
@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
注释中指定的字段上连接表A
和b
来检索的,对吗?但是在这种情况下联接是如何工作的呢?JPA正在检索join子句右侧的实体吗?然后我有一个命名查询:
"select a from A a where (a.b.bfield = :parameter)"
这是什么意思?为什么他们要检查实体
B
字段的相等性?在我的表A
中,我没有任何列是带B
的外键。而b
字段不是表a
中的一列。那么我要检查A
的哪个列的值?我缺少与数据库结构的链接。JPQL查询被转换为SQL查询
此查询返回一个对象,其中A.COD\u UOP\u COO=B.COD\u UOP和B.bfield=parameter。更改B类中元素的数据库列名的bfield
您可以看到nateive查询将以下参数添加到persistence.xml:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
将JPQL查询转换为SQL查询 此查询返回一个对象,其中A.COD\u UOP\u COO=B.COD\u UOP和B.bfield=parameter。更改B类中元素的数据库列名的bfield 您可以看到nateive查询将以下参数添加到persistence.xml:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
你好,谢谢。有解释翻译规则的指南吗?嗨,谢谢。有没有解释翻译规则的指南?