以下に説明する @OneToOne 関係があります。
@OneToOne
@JoinColumnsOrFormulas(
{
@JoinColumnOrFormula(
column = @JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID", insertable = false, updatable = false)
),
@JoinColumnOrFormula(
column = @JoinColumn(name = "CONFIG_NAME", referencedColumnName = "CONFIG_NAME", insertable = false, updatable = false)
),
@JoinColumnOrFormula(
formula = @JoinFormula(value = "'PT-BT'", referencedColumnName = "LANG_ID")
)
}
)
private ConfigurationLanguage language;
列は、エンティティLANG_ID
によってマップされたテーブルの PrimaryKeyです。ConfigurationLanguage
しかし今、JoinFormula 値をハードコーディングされたものとして使用する代わりに、バインド パラメーターを使用して動的に渡す必要があります...
このようなもの:
@OneToOne
@JoinColumnsOrFormulas(
{
@JoinColumnOrFormula(
column = @JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID", insertable = false, updatable = false)
),
@JoinColumnOrFormula(
column = @JoinColumn(name = "CONFIG_NAME", referencedColumnName = "CONFIG_NAME", insertable = false, updatable = false)
),
@JoinColumnOrFormula(
formula = @JoinFormula(value = ":languageId", referencedColumnName = "LANG_ID")
)
}
)
private ConfigurationLanguage language;
以下のように JPQL クエリに渡します。
TypedQuery<ConfigurationCompany> query = manager.createQuery("select c from ConfigurationCompany c " +
"join c.language l " +
"where c.id.customerId = :customerId " +
"and c.id.companyId = :companyId " +
"and c.id.productId = :productId " +
"and c.id.codFilial = :codFilial " +
"and (c.id.configName in :configNames or :configNamesEmpty = true)", ConfigurationCompany.class);
query.setParameter("customerId", customerId);
query.setParameter("companyId", companyId);
query.setParameter("productId", productId);
query.setParameter("codFilial", codFilial);
query.setParameter("configNames", configNames);
query.setParameter("configNamesEmpty", configNamesEmpty);
query.setParameter("languageId", "PT-BR"); //<<<< THIS PARAMETER
しかし、それは機能していません:
org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: Invalid filter-parameter name format [languageId]; expecting {filter-name}.{param-name}
私は何が欠けていますか?