我有一个实体与属性@公式像这样:
@Entity
@Table(name = "areasAuxiliar")
public final class AreaAuxiliar implements Serializable {
@Id
@Column(name = "idArea")
private Integer idArea;
@Formula("RUTAAREA(idArea)")
private String ruta;
当我将hibernate配置为指向Oracle DB时,我没有问题,但是,当我切换到SQLServer时,hibernate不包括shema,并且查询失败,
为hibernate生成的查询如下所示:
select
areaauxili4_.idArea as idArea1_6_4_,
rutaArea(areaauxili4_.idArea) as formula2_4_
from
SIGAP.areasAuxiliar areaauxili4_
参数hibernate.default_schema=SIGAP正在读取并包含在表中,但不包含在函数中,
在该函数中是否有强制shema的选项/注释?
我尝试了hibernate 5.1和5.2,结果相同:(
1) 我知道,对于本机查询,可以使用“{h-schema}”占位符(将用“hibernate.default_schema”参数的值填充):
"SELECT x FROM {h-schema}tableName"
尝试一下,看看这是否碰巧也适用于@Formula。。。
2)如果没有,您也可以尝试使用替换(即hibernate.query.substitutions),以便告诉hibernate将文字S替换为S'-在您的情况下,RUTAAREA替换为模式。RUTAAREA"?
不确定这是否有助于应用到函数中,但是您是否尝试过将属性“模式”添加到@Table
注释中:
@Entity
@Table(name = "areasAuxiliar", schema="mySchemaName")
public final class AreaAuxiliar implements Serializable {
@Id
@Column(name = "idArea")
private Integer idArea;
@Formula("RUTAAREA(idArea)")
private String ruta;
另一个被转换为注释的解决方案是在注释中使用占位符
@Entity
@Table(name = "areasAuxiliar")
public final class AreaAuxiliar implements Serializable {
@Id
@Column(name = "idArea")
private Integer idArea;
@Formula("{SCHEMA_AND_FUNCTION}")
private String ruta;
然后添加一个拦截器来填充公式的值。该解决方案的链接是Hibernate@Formula set value at runtime
最后,请参阅我关于在SQLSERVER中创建全局函数的评论。可以在此处找到详细信息我可以在SQL Server中创建全局函数吗?
您可以使用mysql-orm.xml
文件来覆盖您的公式,然后配置您的构建以在数据库为mysql时考虑到该文件。
在此覆盖公式:
<entity-mappings
xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm orm_2_1.xsd"
version="2.1">
<package>com.acme.persistence</package>
<entity class="AreaAuxiliar" access="FIELD">
<attributes>
<property name="ruta" formula="schemaName.RUTAAREA(idarea)"/>
</attributes>
</entity>
</entity-mappings>
然后将引用添加到特定的persistence.xml
中。然后,在构建或运行时使用此persistence.xml覆盖默认persistence.xml(参见下面的链接)。
<persistence
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="persistenceUnit">
<provider>
org.hibernate.jpa.HibernatePersistenceProvider
</provider>
<mapping-file>
mappings/identifier/global/mysql-orm.xml
</mapping-file>
<class>
com.acme.persistence.AreaAuxiliar
</class>
</persistence-unit>
注意:Heavlly的灵感来源于如何根据底层数据库更改Hibernate GenerationType标识符
注意(2):在博客文章和这里,作者在运行时生成PeristextUnitInfo。
正在寻找旧JSF页面的解决方案。我试图使用contains方法根据另一列是否包含单词red box来呈现组合框。 这一个工作和组合框被禁用。 但是,我也想在值不包含红色框时渲染它们,但随后将启用combox。 这是行不通的。 因此,我如何测试的任何想法都不包含特定的单词。我还尝试了choose test when,但由于第一个表。col4值只是一个空字符串。 有什么想法吗?谢谢。
问题内容: 我正在将整个数据库访问层从Hibernate重写为JOOQ,并且遇到以下问题。 使用@Formula批注对JPA模型之一进行批注,如下所示: 在代码的后面,对数据库进行JPA查询,该数据库将 Fee5 与参数进行比较: 上面的查询如何转换为JOOQ DSL? 问题答案: 我设法通过以下JOOQ查询解决了该问题:
我是EF core的新手,我正在尝试让它与我的ASP一起工作。NET核心项目。 当尝试配置以使用配置中的连接字符串时,我在我的中得到上述错误。我正在遵循本教程。 问题代码在启动中。cs: 如果我将方法直接放入上下文中,则可以识别它: 我在网上的所有研究都指向缺失的参考文献,但我似乎无法找出我缺失的是哪一个(见图)。
Overview Quick setup Custom variables Advanced example Overview The Formulas plugin allows Handsontable to process formula expressions defined in the provided data. This plugin uses a formula-parser l
MathMLFormula 是一个 Flash 开发的组件用于在 Web 上显示 MathML 公式。
基于百度 kityformula-editor 开发的公式编辑器,有 android 和 web 两种模式 安装 npm installnpm install -g anywhere // 随启随用的静态服务器 编译 grunt buildanywhere -p {port} // 这里anywhere是为了开静态服务器,预览index.html 特性 设备类型:device - pc/andro