Spring Roo + Hibernate: имя базы данных в верхнем регистре в запросе - PullRequest
1 голос
/ 07 сентября 2011

Я перепроектировал образец базы данных MySQL с помощью Spring Roo, и я пытаюсь вставить запись, используя сущность Customer следующим образом:

Customer customer = new Customer();
customer.setFirstName("Raffaello");
customer.setLastName("Baresi");
customer.persist();

Однако при первоначальном подключении кк базе данных не удается выполнить запрос вставки, поэтому я включил полный журнал запросов и заметил, что имя схемы пишется в верхнем регистре как ROO_CRM вместо roo_crm.

insert into ROO_CRM.CUSTOMER (COMPANY_ID, FIRST_NAME, LAST_NAME) 
values (null, 'Raffaello', 'Baresi')

В моем файле database.property указан нижний регистрname:

database.url=jdbc\:mysql\://localhost/roo_crm?zeroDateTimeBehavior\=convertToNull&characterEncoding\=UTF-8

Хотя сгенерированный класс Customer имеет атрибут схемы в верхнем регистре аннотации @RooEntity:

@RooJavaBean
@RooToString
@RooEntity(versionField = "", table = "CUSTOMER", schema = "ROO_CRM")
@RooDbManaged(automaticallyDelete = true)
public class Customer {
}

Я подумал, что нужно написать имя схемы в нижнем регистре, очистить и перестроить длядобавлена ​​предосторожность, но в запросе схема по-прежнему прописна.Я также заметил, что Spring-управляемый Customer_Roo_Entity имеет следующую строку:

declare @type: Customer: @Table(name = "CUSTOMER", schema = "ROO_CRM");

, которая все еще находится в схеме верхнего регистра, но мне не разрешено редактировать этот файл.Как правильно решить проблему?

1 Ответ

1 голос
/ 07 сентября 2011

Это было на самом деле очень тривиальное решение: было правильно изменить атрибут схемы аннотации @RooEntity. Что я забыл, так это то, что я должен был оставить оболочку roo открытой, и это автоматически изменило бы сгенерированный файл Customer_Roo_Entity.aj.

Я запустил оболочку roo и сгенерированный Customer_Roo_Entity.aj был изменен, и все заработало.

...