JPA中是否存在Hibernate filters的等效項? 以下休眠註釋可以例如爲了用於定義過濾器:用於Hibernate過濾器的JPA等效項
@Entity
@FilterDef(name="minLength", [email protected](name="minLength", type="integer"))
@Filters({
@Filter(name="betweenLength", condition=":minLength <= length and :maxLength >= length"),
@Filter(name="minLength", condition=":minLength <= length")
})
public class Forest { ... }
我想用的東西從JPA相當於以限制讀取訪問某些實體。如何在沒有Hibernate註釋的情況下使用乾淨的JPA來完成這項工作?
我沒有找到任何認真和可靠的解決方案。 我分析了「」項目。然而,它的主頁在兩年前更新了,它的最後一個版本是0.4.0,它似乎不是一個可靠的解決方案。這不是一個標準,它不受歡迎。
Hibernate中可用於限制對實體的讀取訪問的其他替代方法是Hibernate Interceptor API - 可以實現以下接口方法以附加包含一些附加條件的SQL字符串:
org.hibernate.Interceptor.onPrepareStatement(String sql)
或以下的方法可以被覆蓋:
org.hibernate.EmptyInterceptor.onPrepareStatement(String sql)
我發現有一些JPA事件回調和註釋,例如@PostLoad。然而,這些都不能用於我的情況,因爲我需要根據某些條件(用戶角色)限制對實體的訪問。
任何人都知道如何使用JPA標準來完成它?
我認爲這個回答與問題無關。 @km詢問在讀取數據期間是如何過濾的,並且您正在引用在寫入過程中驗證它。 – Julio
答案的要點是JPA事件。 JPA還提供了與讀取相關的事件('@ PreLoad'和'@ PostLoad',所以對於讀取來說答案也是非常有效的。 – manish