почему я не могу использовать "усечь" в весенней загрузке - PullRequest
0 голосов
/ 10 октября 2019

Я хочу использовать оператор «truncate table» вместо «delete» в весеннем загрузочном проекте, потому что мне нужно сбросить идентификатор автоматического увеличения в mysql. Вот мой код:

@PersistenceContext protected EntityManager em;
@Override
  public void removeAllShopeeCategory() {
    StringBuilder query = new StringBuilder("truncate table ShopeeCategoryDto shopeecategory");
    Query q = this.em.createQuery(query.toString());
    q.executeUpdate();
  }

, но есть исключение, подобное этому:

nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: truncate near line 1, column 1

сработала другая операция, такая как вставка, обновление или выбор, в чем причина и что должноЯ изменяю это?

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Пожалуйста, используйте https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#createNativeQuery-java.lang.String- с собственными SQL-запросами.

0 голосов
/ 10 октября 2019
 entityManager.createNativeQuery("TRUNCATE TABLE " + tableName + " CASCADE")
            .executeUpdate()
...