我有两个表,A_TABLE
和 B_TABLE
。在 A_TABLE
实体类中需要具有 B_TABLE
列组合的公式,如下代码所示,
工作代码:
A_TABLEEntity {
@Column("BM_NAME_I")
private String bmdName;
@Formula("(select b.LAST_NAME || ', '||b.FIRST_NAME||' ('||b.BM_NAME||')'
from BR_SCHEMA.B_TABLE b where UPPER(b.BM_NAME)=UPPER(BM_NAME_I))")
private string nameCombinationB;
}
需要公式解决方案:
1) 是否可以提供任何方式来提供 B_TABLEEntity
类而不是直接提供 B_TABLE
以及来自 B_table
实体类的列?
我尝试过实体类抛出错误, - 表或 View 不存在
2) 是否可以避免在公式之前的 B_TABLE
中给出 SCHEMA
名称?
如果没有架构,则会抛出错误 - 表或 View 不存在
请帮助我上面的@Formula
JPA代码
最佳答案
根据所描述的评论,@Formula 仅采用 native sql,并且文章警告您在某些情况下与特定数据库的耦合。
You should be aware that the @Formula annotation takes a native SQL clause which may affect database portability.
由于 @Formula 需要 native SQL,因此您应始终包含架构。我认为某些数据库具有不需要显式定义的默认架构。
对于一些高级操作,我可能会提供一些注释,例如 @PostLoad 并使用旧的实体管理器或直接 jdbc 加载所需的属性。
也许这些链接可能有帮助: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#basic
https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#fetching
关于java - JPA @Formula 没有架构名称或使用实体类进行配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58638234/