gpt4 book ai didi

java - 当我更改类中对象的字段时,Spring/Hibernate 会自动更新数据库

转载 作者:行者123 更新时间:2023-11-30 07:04:07 27 4
gpt4 key购买 nike

我有一个类叫做 VoceMenuUtente ,注释为@Entity,有 2 个字段:

  1. 描述
  2. 标题

我选择获取数据库中的数据。在屏幕上打印它们之前,我必须向从数据库中获取的值添加一个字符串,所以我这样做:

voceMenuUtente.setDescrizione = voceMenuUtente.getDescrizione + "blablabla";

我在一个名为 TransactionPreDAO 的类(class)中​​制作了它.我有那个类(class)的切入点:

<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,所以可能我犯了一些错误。

是否取决于我错过了read-only="true"在标签 <tx:method name="*"/>

最佳答案

一旦您通过get、查询、条件等从数据库加载对象,对象状态就会与持久化上下文相关联,并且对它的任何更改都会自动传播到数据库。

您不必对该对象显式调用 updateupdate 用于将分离的对象重新附加到 session 中。之前已持久化但当前未与 Hibernate session 关联的对象。

如果您想覆盖该默认行为,您可以调用 session.evict(voceMenuUtente)。这将使对象分离(从持久性上下文中逐出对象)。

关于java - 当我更改类中对象的字段时,Spring/Hibernate 会自动更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27816625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com