adf 自动输稿器_在ADF实体PK属性中使用MySQL自动增量PK列

adf 自动输稿器

大家好。 继续进行ADF + MySQL解决方法系列,今天我们将看到需要做些什么才能将MySQL PK自动增量列与ADF实体PK属性一起使用。 如果使用的是Oracle数据库,则可以使用oracle.jbo.domain.DBSequence以及序列和触发器来立即进行操作。

为简单起见,我们将修改与Entity关联的Java文件,但作为一种好的做法,您应该拥有自己的oracle.jbo.server.EntityImpl类实现并配置JDeveloper,以便它对每个新的版本都使用自己的实现应用程序中的实体。 有关更多信息,请查看此帖子 。

这不是有关如何从表中创建ADF BC的分步教程,我们假设您已经具有业务组件定义。

你需要什么

  • JDeveloper 12c
  • MySQL 5.5以上
  • 为ADF开发配置MySQL

这是本文中将要使用的数据库表:

CREATE  TABLE `test`.`Actor` (`id_actor` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(100) NOT NULL ,PRIMARY KEY (`id_actor`) );

从表创建实体后,JDeveloper会将您的Entity属性映射到表列,并根据列的类型设置一些属性。 例如,对于我们的PK列(id_actor),JDeveloper会将属性设置为强制性 Integer并且始终可更新。 我们需要进行更改,因为我们希望我们的PK 在新的 (创建新实例时)是可更新的, 不是强制性的 (因为我们在发布到数据库后正在读取autoincrement值):

ADFMySQL_EntityAtt_1

您的数据库中可能有几个表,因此您的ADF应用程序中有多个实体,但是并非所有表都可能具有自动增量PK列,因此我们需要一种方法来标记或标识实体的PK属性何时来自数据库中的自动增量列。 我们将使用Property Set来做到这一点,它允许我们定义键/值属性的集合,然后我们可以将这些属性关联到属性并在运行时访问它们:

  1. 在JDeveloper中,选择: 文件–>新建–>从库…
  2. ADF业务组件中,选择“ 属性集” PropertySet_1
  3. 设置新属性集的名称和包:
    PropertySet_2
  4. 创建后,我们可以定义键/值属性集,如果要向用户显示这些属性,我们甚至可以以可翻译模式定义它们。 这不是我们的情况,因此我们将定义一个不可翻译的属性:
    PropertySet_3
  5. 将属性名称设置为AI (对于AutoIncrement),并将其值设置为true (因为使用此属性集的属性来自自动增量列):
    PropertySet_4
  6. 现在我们已经准备好属性集,可以在Entity PK属性中使用它:
    PropertySet_5

为了检索PK属性的autoincrement值,我们需要覆盖Entity类的默认实现(请记住,为简单起见,请执行此操作,但您可以按照本文开头的介绍做得更好)。 我们可以通过为Entity实现Java类,然后重写EntityImpl.doDML(int,TransactionEvent)方法(将更改发布到数据库的方法来实现:

  1. 转到实体的Java部分,然后单击铅笔图标:

    Java_1

  2. 在弹出窗口中,选择Generate Entity Object Class: ...,然后单击OK:
    Java_2
  3. 现在,Entity类的Java部分显示Java文件,单击指向Java File名称的链接:
    Java_3
  4. JDeveloper将打开一个包含Java代码的新窗口。 复制并粘贴以下方法:
    ...@Overrideprotected void doDML(int i, TransactionEvent transactionEvent) {//got to call first to super, so the record is posted //and we can then ask for the last insert idsuper.doDML(i, transactionEvent);//after the record is inserted, we can ask for the last insert idif (i == DML_INSERT) {populateAutoincrementAtt();}}/** Determines if the Entity PK is marked as an autoincrement col* and executes a MySQL function to retrieve the last insert id*/private void populateAutoincrementAtt() {EntityDefImpl entdef = this.getEntityDef();AttributeDef pk = null;//look for primary key with Autoincrement property setfor (AttributeDef att : entdef.getAttributeDefs()) {if (att.isPrimaryKey() && (att.getProperty("AI") != null && new Boolean(att.getProperty("AI").toString()))) {pk = att;break;}}if (pk != null) {try (PreparedStatement stmt = this.getDBTransaction().createPreparedStatement("SELECT last_insert_id()", 1)) {stmt.execute();try (ResultSet rs = stmt.getResultSet()) {if (rs.next()) {setAttribute(pk.getName(), rs.getInt(1));}}} catch (SQLException e) {e.printStackTrace();}}}
    ...

    上面的代码将更改发布到数据库,然后询问我们是否要插入值。 如果是这种情况,我们需要检索自动增量值并将其设置在我们的PK属性中。 有关获取自动增量值的更多信息,请参考MySQL函数LAST_INSERT_ID() 。

好的,让我们尝试一下我们的解决方案。 首先,运行您的应用程序模块:

RunAppModule_1

出现Oracle ADF Model Tester工具后,在左侧面板上选择(双击) ActorView1视图对象,然后在右侧面板上单击绿色的加号图标,以添加新的Actor:

RunAppModule_2

输入Actor的名称,然后按“将更改保存到数据库”按钮(工具栏上带有清单图标的小数据库):

RunAppModule_4

您会注意到,自动增量值现已设置为
idActor属性!

无需担心并发插入,MySQL文档指出可以(请查看此文档 ):

同时使用多个客户端的LAST_INSERT_ID()和AUTO_INCREMENT列是完全有效的。 每个客户端将收到该客户端执行的最后一条语句的最后插入的ID。

  • 下载本文中使用的ADF项目 。

拜拜!

参考:来自Java和ME博客的JCG合作伙伴 Alexis Lopez 在ADF实体PK属性中使用MySQL自动增量PK列 。

翻译自: https://www.javacodegeeks.com/2013/11/using-mysql-autoincrement-pk-column-in-adf-entity-pk-attribute.html

adf 自动输稿器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab rbf核函数,RBF高斯径向基核函数-svm

RBF高斯径向基核函数(单值:两个点相似性)XVec表示X向量。||XVec||表示向量长度。r表示两点距离。r^2表示r的平方。k(XVec,YVec) exp(-1/(2*sigma^2)*(r^2)) exp(-gamma*r^2)...... 公式-1这里, gamma1/(2*sigma^2)是参数, r||XVec-YVec||实际上,可看作是计算2个点X…

【渝粤题库】广东开放大学 人力资源本 形成性考核

选择题 题目:中国规定的最低就业年龄是( ) 答案: A、15岁 B、16岁 C、14岁 D、18岁 题目:关于人力资源管理环境的辨识,变化小且数量大的是? 答案: A、高度不确定性的环境 B、中低不确…

【渝粤题库】广东开放大学 会展项目实践 形成性考核

选择题 题目:会展行业是一个()的服务行业。 答案: A、行业精英型 B、知识含量小 C、劳动密集型 D、劳动稀疏型 题目:会展业具有()和社会效益。 答案: A、集聚效应 B、文化效益 C、生…

python string 方法,python字符串的方法与操作大全

一:字符串的方法与操作*注意:首字母为l的为从左边操作,为r的方法为从右边操作1.__contains__()判断是否包含判断指定字符或字符串是否包含在一个字符串内,返回值为true或者false运行结果:TrueTrueFalse作用和in相似运行结果&#…

探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)

最近引起我注意的一个有趣且充满希望的开源项目是Spline ,它是由Absa维护的Apache Spark的数据沿袭跟踪和可视化工具。 该项目由两部分组成:一个在驱动程序上工作的Scala库,该驱动程序通过分析Spark执行计划来捕获数据沿袭,并提供…

【渝粤题库】广东开放大学 商务翻译实务 形成性考核

选择题 题目:IX. 选择正确的翻译。(每题1分) 4) 司马相如 答案: A、Si MaXiangru B、Si Maxiangru C、Sima Xiangru D、Simaxiang Ru 题目:IX. 选择正确的翻译。(每题1分) 5) 文树安 答案&…

php入门速成(2),PHP入门速成(1)

PHP简介PHP是一种用于创建动态WEB页面的服务端脚本语言。如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访…

【渝粤题库】广东开放大学 婚姻家庭法 形成性考核

选择题 题目:婚姻家庭的本质属性是( )。 答案: A、自然属性 B、自然属性与社会属性的结合 C、社会属性 D、以上都不对 题目:王某已婚,因工作关系离开老家,一人长期在甲地工作,在工作…

【渝粤题库】广东开放大学 建筑力学与结构 1形成性考核

题目:平面平行力系,取一刚体作为研究对象,最多可求()个未知量。 题目:二力平衡是作用在()个物体上的一对等值、反向、共线的力。 题目:梁在C点作用一力,当力偶…

JDK 12附带紧凑数字格式

JDK 12 Early Access Build 24引入了对紧凑数字格式的支持 。 JDK-8188147(紧凑数字格式支持)CSR的“摘要”是简单的句子,“添加了对JDK中紧凑/短数字格式的支持。” 相同的CSR还提供了详细的“解决方案”部分,该背景提供了为每个…

php 怎么循环数组取有值的,php怎么循环数组取有值的-PHP问题

php 怎么循环数组取有值的1、使用foreach或者while的,利用这两个语法结构来输出有值的项或删除数组中的空元素,简单代码如下:$v){if( $v ){echo $arr[$k];}else{// unset( $arr[$k] );}}?>foreach是将当前操作的数组进行copy,…

【渝粤题库】广东开放大学 经济学基础 形成性考核

选择题 题目:微观经济学的中心理论是( ) 答案: A、价值理论 B、价格理论 C、分配理论 D、生产理论 题目:作为经济学的一个分支,微观经济学主要研究( ) 答案: A、国…

【渝粤题库】广东开放大学 计算机应用基础(专科) 形成性考核

选择题 题目: 在Windows中,下图所示的5个鼠标指针状态的正确描述依次是________。 题目:使用"格式刷”按钮,可以进行___________操作。 题目:在Word编辑状态,可以使插入点快速移动到文档首部的组合键_…

高性能mysql 聚簇索引,高性能MySQL笔记-第5章Indexing for High Performance-005聚集索引...

一、聚集索引介绍1.什么是聚集索引?InnoDB’s clustered indexes actually store a B-Tree index and the rows together in the same structure.2.为什么一张表只能一个聚集索引?When a table has a clustered index, its rows are actually stored in …

【渝粤题库】广东开放大学社会学概论形成性考核

选择题 题目:我国职业分层的基本特点是:职业地位的高低主要取决于()。 题目:()标示作为控制途径的社会规范的严密程度。 题目:在各种社会制度中,除了经济制度外&#xff…

【渝粤题库】陕西师范大学151213 公司战略与风险管理作业(专升本)

《内部控制与风险管理》作业 一、单选题 1.1992年,COSO发布了著名的( )。 2.下列选项中,被称为“萨班斯法案”中最难操作、最复杂、耗费成本最高的一个条款的是( )。 3.根据基本规定,规范企业内…

英特尔 至强 单核计算性能_使用英特尔性能计数器调整垃圾收集

英特尔 至强 单核计算性能介绍 我不得不承认我很震惊。 确实,当我意识到这个出现的日历帖子将涉及垃圾收集时,我感到非常震惊。 GC的主题引起了Java倡导者和那些认为内存管理应该是手动的人的热情。 撰写了许多文章,内容涉及看起来奇怪的命令…

mppt多峰追踪MATLAB仿真,基于光伏功率等效面积法的多峰最大功率追踪控制方法...

0引言在光伏系统实际应用中,由于天上移动的云朵、电池板累积的灰尘以及城镇中周围建筑物等的影响,光伏阵列在运行过程中总会受到不同程度的阴影遮挡,太阳能电池板的P-U曲线会受到影响出现多个峰值点。传统的MPPT控制方法在电池板没受到局部阴影影响的情况下可以有效的追踪到电池…

【渝粤题库】陕西师范大学163208 饭店管理 作业

《饭店管理》作业 名词解释 1、饭店星级制 2、品牌忠诚度 3、指挥职能 4、风险型决策 5、饭店全面质量管理 6、饭店形象识别系统(CIS) 7、饭店市场细分 8、饭店产品 9、单一性需要 10、社会性消费动机 11、决策职能 12、因果分析图法 13、知名度 14、客房…

【渝粤题库】陕西师范大学165104 组织行为学原理 作业(高起专)

《组织行为学原理》作业 一、单项选择题 1.同一个人穿横条纹的衣服会显得胖些,穿竖条纹的衣服会显得瘦些。这种现象称之为____。 A适应 B对比 C敏感化 D感受性降低 2.人们以自己所具有的品质为依据去判断别人的品质&am…