У меня возникла такая проблема удобства, с которой я не могу справиться. Моя таблица с именем Plan
не будет усекать. Субъект таблица выглядит следующим образом:Усекающий стол с ключевым словом как имя
@Entity
@Table(name = "`Plan`")
public class TablePlan {
...
}
А между блоком тестов мне нужно укоротить эту таблицу:
@After
public void resetDatabase(){
EntityManager em = objectRegistration.getEntityManager();
em.getTransaction().begin();
em.createNativeQuery("truncate table Plan").executeUpdate();
em.getTransaction().commit();
}
Поскольку Plan
является ключевым словом в MSSQL, мне нужно, чтобы окружить «план» с назад, как вы можете видеть в имени таблицы сущностей. В настоящее время я просто использую hibernate для тестирования своих методов, что не требует, чтобы я окружал «Plan» с кавычками, но поскольку этот код предназначен для реальной базы данных, я не хочу его менять.
Я также не могу изменить ни одного имени в любом месте, так как это существующая база данных с milions записей.
Я уже пытался укоротить его так:
em.createNativeQuery("truncate table `Plan`").executeUpdate();
Но это не похоже на работу и после часа поиска в Интернете и не зная точно, что искать, я понял, давайте использовать этот SO учтите изменение! Я уже отлаживал код до такой степени, что я на 100% уверен, что запрос обновления truncate просто не выполняется, поскольку он обрезает некоторую несуществующую таблицу. Поэтому моя таблица «План» не распознается.
Если вам нужна дополнительная информация, я постараюсь предоставить его здесь.
Заранее спасибо за чтение этого =)
***** ***** РЕШЕНИЕ
Изменить имя таблицы:
@Table(name = "\"Plan\"")
И изменить запрос усечь:
em.createNativeQuery("truncate table \"Plan\"").executeUpdate();
Et voila!
Вы верны. Я добавил только обратные кавычки, потому что мне сказали где-то еще, что это исправит мои проблемы с sql. Используемые двойные кавычки теперь и модульные тесты снова запускаются. Все еще нужно протестировать мой сервер mssql, независимо от того, работает ли он еще так же =) –
Работает и на mssql, спасибо! Будет обновлен мой код в вопросе –
FWIW JDBC DatabaseMetadata имеет метод, который сообщает вам, что котировать вещи, поэтому вы можете стать независимым от базы данных. –