java - JPA @Formula 没有架构名称或使用实体类进行配置

标签 java jpa spring-data-jpa

我有两个表,A_TABLEB_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代码

最佳答案

你绝对应该看这里: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#mapping-column-formula

根据所描述的评论,@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/

相关文章:

美国股市的 Java 日历时区

java - 没有 persist() 指令的 JPA 持久实体

java - @PostConstruct 第一次执行失败

java - JPA 试图强制我拥有一个名为 'id' 的属性和数据库列

java - 如何实现WebView滚动时隐藏工具栏?

java - BeanValidation 错误 - 在类路径上找不到 JSR 303 Bean 验证实现

java - 使用值 ajax upload 和 OctetStreamReader 上传的图片在 IE 中不起作用 - Java/JSP

java - 如何在JPA(Spring Data JPA)中实现简单的全文搜索?

spring-boot - 更改Pageable的页面大小(spring boot jpa)

java - 即使表单字段留空,也会提交空字符串并在 Spring 中创建新实体