Hibernate/JPA "update without select"可能吗?



所以使用JPA/Hibernate,你当然可以加载实体"代理",而不会使用session.load()entityManager.getReference()之类的东西来访问数据库。

但是,如果不从数据库初始化代理,似乎不可能在这些"代理"上设置属性。因此,不能只保留更改的值(通过实体上的@DynamicUpdate(而不进行选择。

我相信这就是它的方式,如果你想要update without select你必须自己滚动它。如果有人能证明我是错的,我会很高兴!我错过了什么吗?

恐怕你是对的,正如@DynamicUpdate的java-doc中所写的那样: "请注意,对于分离实体的重新附加,如果不启用更新前选择,这是不可能的。">

在这种情况下,nicolasl 给出的答案是不正确的,如果您希望控制在使用 CrudRepository.save(( 时是否触发持久化或合并,则需要实现持久

AFAIK 选择由合并操作执行,唯一目的是检查数据库中是否已存在实体。如果这是正确的,您可以像他们在文档中所说的那样实施自己的验证:

实现持久:如果一个实体实现了持久,Spring 数据 JPA 将新检测委托给 实体。有关详细信息,请参阅 JavaDoc。

实现实体信息:您可以自定义 SimpleJpaRepository 中使用的实体信息抽象 通过创建 JpaRepositoryFactory 的子类来实现 相应地重写 getEntityInformation(...( 方法。然后你 必须将 JpaRepositoryFactory 的自定义实现注册为 一颗春豆。请注意,这应该很少是必需的。请参阅的 JavaDoc 了解详细信息。

(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.entity-persistence.saving-entites(

我从来没有实现过这样的事情,但我想你可以试一试......

希望这对你有帮助

干杯

尼考

最新更新