如何将 Groovy GORM 独立地用于 Java 项目

14 篇文章 0 订阅
11 篇文章 0 订阅

在java项目中正确使用 GORM 的方法

使用 @Entity 注解,不要实现 GormEntity 接口

添加实体类到 HibernateDatastore 中

开发 DataService 接口和抽象实现类

编写一个 DataService 的 bean factory,并配置到 spring 中

错误使用时会遇到的问题

Groovy 的 Joint Compile 产生的 GORM entity 类存根代码缺少 hasMany 属性的方法

D:\git\java\gorm-for-java-standalone\src\main\groovy\Main.java:37: 错误: 找不到符号
        phone.getButtons().addAll(Arrays.asList(powerButton, volumeButton));
             ^
  符号:   方法 getButtons()
  位置: 类型为Phone的变量 phone

实体是这样的

@Entity
class Phone {
    BigDecimal price

    // hasMany association, a Phone has many buttons
    static hasMany = [buttons: Button]

    // one-to-one association, a Phone has only one screen
    static hasOne = [screen: Screen]
}

显示添加一个 Set buttons 属性才勉强通过编译。

接着有报告编译错误

D:\git\java\gorm-for-java-standalone\src\main\groovy\Main.java:40: 错误: 找不到符号
        Phone loadedPhone = phoneService.getById(phone.getId());
                                                      ^
  符号:   方法 getId()
  位置: 类型为Phone的变量 phone

因为 entity 中没有显式定义 id 属性,这个是 entity 会自动提供的属性,但是编译为存根时必须有显式定义。

给Entity 显式添加 id 属性后,就可以成功编译了。

如何在 spring 中指定一个 Package 类型的参数值?

可以使用 Spring EL 表达式,如下:

<list>
    <value type="java.lang.Package">#{T(com.telecwin.gorm.example.entity.Phone).getPackage()}</value>
</list>

hasMany 属性为 null 的问题

人工添加的 hasMany 属性,用 getButtons() 获取时,得到的是一个 null 而不是集合。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值