2012-11-22 93 views
0

我被卡住(再次;;)與一些JPA相關的問題,並希望在這裏的任何人都可以幫助(駱駝在行動中不能...):駱駝JPA:標記爲實體消耗(不更新表記錄)

我使用namedQuery從JPA端點使用。 我無法刪除使用的條目,因此我使用「consumeDelete = false」選項。

但我怎樣才能防止多次閱讀相同的條目? 我知道「@消費者」註釋,但由於我不允許修改/更新原始數據庫條目,我還沒有想出我如何可以標記爲「消耗」條目...

有任何想法嗎?

感謝, 中號

回答

1

如果您不能更改數據庫中的數據無論如何,以反映您已經消耗的記錄,那麼你就需要「存儲」這一信息在其他地方。

可以使用冪等消費EIP模式 http://camel.apache.org/idempotent-consumer.html

然後,您就需要使用內存/文件/另一個數據庫/表來存儲的已編號的消費的消息,並使用與冪等消費模式。

+0

感謝聖誕老人!我在「駱駝在行動」中讀到了冪等消費者(偉大的書btw)。將研究你提出的方法!只是認爲可能會有一些解決方法(例如,在瞬態屬性上使用@consumed,或類似的...) – Matthias

+0

嗨,再次,現在使用內存存儲庫(MemoryIdempotentRepository)實現了冪等消費者。它工作正常,直到現在,再次感謝!只是想知道內存回購可以處理多少條目。你有這方面的經驗嗎?問候,M – Matthias

+0

我認爲你可以設置內存回購的上限。它使用默認的1000個條目。它使用基於LRU的緩存。 –

0

你可以在任何方法名稱的實體類中使用@Consumed,並將字段的值更改爲期望值。例如

@Consumed 
public void updateConsumedStatus() { 
this.status = false; 
} 

請點擊這裏太 http://camel.apache.org/jpa.html