![](/img/trans.png)
[英]EntityManager performs UPDATE to database automatically when I change a field of Embedded object, but do not call merge or flush
[英]Database automatically update by Spring/Hibernate when I change a field of an Object in a class
我有一個名為VoceMenuUtente
的類,其注釋為@Entity,具有2個字段:
我進行選擇以獲取數據庫內部的數據。 在屏幕上打印它們之前,我必須向從數據庫獲取的值中添加一個字符串,所以我要這樣做:
voceMenuUtente.setDescrizione = voceMenuUtente.getDescrizione + "blablabla";
我在名為TransactionPreDAO
的類中進行了此操作。 我有該課程的切入點:
<tx:advice id="txAdviceTransactionPreDAO" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPreDAOTxPointcut" expression="execution(* com.springgestioneerrori.preDAO.TransactionPreDAO.*(..))" />
<aop:advisor advice-ref="txAdviceTransactionPreDAO" pointcut-ref="transactionPreDAOTxPointcut" />
</aop:config>
之后,我的數據庫會自動更新,並且在Descrizione字段中我不再具有原始值,但是我具有原始值加“ blablabla”嗎?
為什么會這樣? 我沒有對象VoceMenuUtente
任何“更新”方法。 也許這取決於切入點。 我還在學習Spring,所以我可能犯了一些錯誤。
是否取決於我在標記<tx:method name="*"/>
錯過了read-only="true"
的事實
通過get
,query,條件等從數據庫加載對象后,對象狀態將與持久性上下文相關聯,並且對它的任何更改都將自動傳播到DB。
您不必顯式調用該對象上的update
。 update
用於將分離的對象與會話重新連接。 一個以前曾被持久保存但當前未與Hibernate會話關聯的對象。
如果要覆蓋該默認行為,可以調用session.evict(voceMenuUtente)
。 這將使對象分離(將對象從持久性上下文中逐出)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.