gpt4 book ai didi

java - JPA Hibernate 正在为简单的更新查询创建临时表

转载 作者:行者123 更新时间:2023-11-30 06:50:55 24 4
gpt4 key购买 nike

我在我的存储库中有一个简单的查询来增加给定帖子对象的帖子的评论数量:

public interface PostsRepository extends PagingAndSortingRepository<Post, Long>{

//...

@Modifying
@Query("UPDATE Post p set p.numComments = p.numComments + 1 where p = :post")
void incrementNumComments(@Param("post") post obj);

//...
}

型号:

@Entity
@Table(name="posts")
@Inheritance(strategy= InheritanceType.JOINED)
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "post_id", updatable = false, nullable = false)
@Access(AccessType.PROPERTY)
private Long id;
}

但是,hibernate 似乎是在使用临时表来执行查询。以下是从日志中生成的查询:

Hibernate: insert into HT_posts select pos0_.post_id as post_id from posts pos0_ where pos0_.s_id=?
Hibernate: update posts set num_comments=num_comments+1 where (post_id) IN (select post_id from HT_posts)

有没有办法阻止 Hibernate 为这个查询使用临时表?

谢谢

最佳答案

您可以找到有关 Multitable bulk operations 的详细信息.

正如@Giovanni 提到的,这是因为使用了InheritanceType.JOINED

关于java - JPA Hibernate 正在为简单的更新查询创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40809645/

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