我已经使用 Spring Roo 对示例 MySQL 数据库进行了逆向工程,并且我尝试以这种方式使用 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文件包含小写名称:
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");
仍然采用大写模式,但我不允许编辑该文件。解决问题的正确步骤是什么?
最佳答案
这实际上是非常简单的解决方案:更改 @RooEntity 注释的架构属性是正确的。我忘记的是,我应该让 roo shell 打开,这样就会自动修改生成的 Customer_Roo_Entity.aj 文件。
我启动了 roo shell,生成的 Customer_Roo_Entity.aj 已被修改,一切正常。
关于java - Spring Roo + hibernate : uppercase database name in the query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331040/