2017-09-03 126 views
1

我使用Hibernate的實體管理器5.1.8決賽什麼是休眠參數名稱的正確格式

我有以下過濾器定義註釋了一個名爲提交類。

@FilterDefs({ 
    @FilterDef(name=Submission.BY_DATE_RANGE_FILTER, 
      parameters={ @ParamDef(name=Submission.WITH_START_PARAM, type="java.util.Date"), 
         @ParamDef(name=Submission.WITH_END_PARAM, type="java.util.Date") 
    }), 
    @FilterDef(name=Submission.BY_INSTID_SET_FILTER, 
       [email protected](name=Submission.BY_INSTID_SET_PARAM, type="java.lang.String")), 
    }) 

@Filters({ 
    @Filter(name=Submission.BY_DATE_RANGE_FILTER, condition="added <= :lastDay and added > :firstDay"), 
    @Filter(name=Submission.BY_INSTID_SET_FILTER, condition="instid in :byinstidsetparam"), 
}) 

和類

public static final String WITH_START_PARAM = "firstDay"; 
public static final String WITH_END_PARAM = "lastDay"; 
public static final String BY_INSTID_SET_PARAM = "byinstidsetparam"; 

當我嘗試激活任一或二者,這些濾波器的,休眠拋出異常

java.lang.IllegalArgumentException: Invalid filter-parameter name format 
    at org.hibernate.engine.spi.LoadQueryInfluencers.parseFilterParameterName(LoadQueryInfluencers.java:144) 
    at org.hibernate.hql.internal.ast.util.JoinProcessor.processDynamicFilterParameters(JoinProcessor.java:232) 
    at org.hibernate.hql.internal.ast.util.SyntheticAndFactory.addWhereFragment(SyntheticAndFactory.java:98) 
... more ... 

谷歌搜索內下列靜態最終定義消息來源給了我這個: http://grepcode.com/file/repo1.maven.org/maven2/org.hibernate/hibernate-core/5.0.0.CR3/org/hibernate/engine/spi/LoadQueryInfluencers.java#LoadQueryInfluencers.parseFilterParameterName%28java.lang.String%29

當然,如果參數名稱不包含'。',則會引發此異常。

雖然這是神祕的。

  • 如果我將我的參數重命名爲包含'。'我得到的是同一個地方拋出的異常。

  • 沒有例子,我可以在網上找到的過濾器參數功能(包括官方的Hibernate文檔)有一個'。'在參數名稱中。

它可能是這個源代碼是一個紅色的鯡魚。

有沒有人有任何想法是怎麼回事?任何和所有建議表示讚賞。

回答

0

我沒有在相關的地方看。下面是刪除上述

public static final String BY_STUDENTID_FILTER = "with-studentid"; 
public static final String BY_DATE_RANGE_FILTER = "within-daterange"; 
public static final String BY_INSTID_SET_FILTER = "with-instructorset"; 

引用的過濾器名稱(不參數),常量的定義「 - 」從這些名字解決了這個問題。

摘要,過濾器名稱不能包含連字符。如果他們這樣做,Hibernate會抱怨過濾器參數定義的格式錯誤。

相關問題