У меня есть простой запрос в моем хранилище, чтобы увеличить число комментариев на пост данного пост объекта:JPA Hibernate создает временные таблицы для простого запроса на обновление
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 с использованием временных таблиц для этого запроса?
Благодаря
Я думаю, что причина в аннотации '@Inheritance (strategy = InheritanceType.JOINED)' – Giovanni
@Giovanni Я тоже подозревал, что, но я не уверен, как исправить, если аннотация является виновником. – Dyip302