Spring Roo + Hibernate:查询中的大写数据库名称

时间:2011-09-07 08:42:53

标签: java hibernate spring jpa-2.0 spring-roo

我使用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");

仍然使用大写架构,但我不允许编辑该文件。解决问题的正确程序是什么?

1 个答案:

答案 0 :(得分:1)

这实际上是非常简单的解决方案:更改@RooEntity注释的schema属性是正确的。我忘了的是,我应该让roo shell保持打开状态,这会自动修改生成的Customer_Roo_Entity.aj文件。

我启动了roo shell,生成的Customer_Roo_Entity.aj被修改,一切正常。