如何扩展JPA Annotation以更好的支持OR Mapping - 编程入门网
terface MaximumValue {
String value();
}
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface MinimumValue {
String value();
}
如何扩展JPA Annotation以更好的支持OR Mapping(4)时间:2011-04-19 IBM 周蕾蕾 胡光辉 赵 成清单 6. 应用 @Maximium 和 @Minimium
@MaximiumValue 和 @MinimiumValue 被应用于 Java 类的域中。 与 3.1 类似,在这里设置了回调函数所在的类 TestMaxMinListener,函数如清单 7 所 示: 清单 7. 处理 @ MaximiumValue 和 @MinimiumValue 的回调函数
这个 TestMaxMinListener 的作用就是检测相应的属性值是否在规定的范围内,如果超出 了规定的范围,那么就会抛出异常,从而防止将错误的数据存入数据库中。 @Unsigned 与上面的情况相同,对于某些属性的值,我们希望它是一个无符号整形数。而在 OpenJPA 中也没有相关的 Annotation 来指定。可以自定义一个 Annottation:@Unsigned 用来表示 某个属性的值是无符号数。 清单 8. @Unsigned 的定义
如何扩展JPA Annotation以更好的支持OR Mapping(5)时间:2011-04-19 IBM 周蕾蕾 胡光辉 赵 成在 Entity Class 当中可以直接把 @Unsigned 设置在相应的属性前面 , 如清单 9 所示 : 清单 9. 应用 @Unsigned
@Unsigned 的处理方式和 @MaximiumnValue 类似,这里就不再一一赘述。 @Required 数据库对表中的各项字段可以定义限制条件,如某些字段不能为空,某些字段为主键等。 OpenJPA 定义的 @Column 中提供了字段以限制条件的映射,参考清单 11 中 @Column,将 nullable 设置为 false 来控制字段不能为空。 但是在图 1 所示的应用中,OnlineGame.ServiceProvider 不能为 null,同时必须 SINGLE_TABLE 的继承策略(参照表 1)来映射这一组类,如果仅仅应用 @Column 的 nullable 属性,我们将不得不面临这样一个问题:当试图持久化一个 PCGame 的实例到数据 库中时,数据库系统将会提示该数据不能插入,因为数据系统对插入表 1 中的数据要求 ServiceProvider 不能为空。 图 1. 类图 表 1 . 用 SINGLE_TABLE 在 DB 中存储 Game,OnlineGame 和 PCGame
|
||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |