Как я могу создать объект Spring Roo без поля идентификатора (первичного ключа)

#java #spring #spring-roo

#java #spring #spring-roo

Вопрос:

Я пытаюсь создать объект Spring Roo для устаревшей таблицы базы данных. В таблице не определен первичный ключ.

Однако Roo не позволит мне определить объект без identifierField :

 @RooEntity(identifierColumn = "", identifierField = "", table = "XYZ", versionField = "")
  

Это приводит к сбою тестов интеграции Roo с:

 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'id' in 'field list'
  

Потому что он создает @Id @Column(name = "id") поле и в Roo_Entity.aj.

Я попытался перепроектировать эту таблицу с помощью функции DBRE Roo, но все, что она делает, это создает класс идентификаторов, содержащий все поля объекта. Когда это происходит, я не могу добавить средства поиска для отдельных столбцов таблицы.

Ответ №1:

Насколько я знаю, для Roo требуется первичный ключ и настоятельно рекомендуется идентификатор версии.

Можно использовать либо простой, либо комбинированный первичный ключ. Также, просматривая документацию DBRE, нет упоминания о таблицах без первичного ключа.

Как насчет исправления базы данных? Что это за СУБД? Возможно ли добавить числовой идентификатор, возможно, автоматически сгенерированный?

Комментарии:

1. Я действительно хочу избежать изменения схемы БД только для того, чтобы она работала с Roo. Я все еще не могу найти способ заставить Roo работать с таблицей, у которой нет первичного ключа, поэтому мне, скорее всего, придется добавить первичный ключ.

2. Я так и не смог придумать, как это сделать, поэтому мне пришлось изменить таблицу, чтобы добавить первичный ключ.