我被卡住(再次;;)與一些JPA相關的問題,並希望在這裏的任何人都可以幫助(駱駝在行動中不能...):駱駝JPA:標記爲實體消耗(不更新表記錄)
我使用namedQuery從JPA端點使用。 我無法刪除使用的條目,因此我使用「consumeDelete = false」選項。
但我怎樣才能防止多次閱讀相同的條目? 我知道「@消費者」註釋,但由於我不允許修改/更新原始數據庫條目,我還沒有想出我如何可以標記爲「消耗」條目...
有任何想法嗎?
感謝, 中號
我被卡住(再次;;)與一些JPA相關的問題,並希望在這裏的任何人都可以幫助(駱駝在行動中不能...):駱駝JPA:標記爲實體消耗(不更新表記錄)
我使用namedQuery從JPA端點使用。 我無法刪除使用的條目,因此我使用「consumeDelete = false」選項。
但我怎樣才能防止多次閱讀相同的條目? 我知道「@消費者」註釋,但由於我不允許修改/更新原始數據庫條目,我還沒有想出我如何可以標記爲「消耗」條目...
有任何想法嗎?
感謝, 中號
如果您不能更改數據庫中的數據無論如何,以反映您已經消耗的記錄,那麼你就需要「存儲」這一信息在其他地方。
可以使用冪等消費EIP模式 http://camel.apache.org/idempotent-consumer.html
然後,您就需要使用內存/文件/另一個數據庫/表來存儲的已編號的消費的消息,並使用與冪等消費模式。
你可以在任何方法名稱的實體類中使用@Consumed,並將字段的值更改爲期望值。例如
@Consumed
public void updateConsumedStatus() {
this.status = false;
}
感謝聖誕老人!我在「駱駝在行動」中讀到了冪等消費者(偉大的書btw)。將研究你提出的方法!只是認爲可能會有一些解決方法(例如,在瞬態屬性上使用@consumed,或類似的...) – Matthias
嗨,再次,現在使用內存存儲庫(MemoryIdempotentRepository)實現了冪等消費者。它工作正常,直到現在,再次感謝!只是想知道內存回購可以處理多少條目。你有這方面的經驗嗎?問候,M – Matthias
我認爲你可以設置內存回購的上限。它使用默認的1000個條目。它使用基於LRU的緩存。 –