使用CMP Beans生成主键值

Sun Java System Application Server 支持 EJB 1.1、2.0 和 2.1 CMP beans 的自动主键生成。若 要指定自动主键生成,在 ejb-jar-xml 文件中将 prim-key-class 元素的值规定为 java.lang.Object。 具有自动生成主键的 CMP beans 可以参与与其他 CMP beans 的关系。Sun Java System Application Server 不支持数据库生成的主键值。

如果在部署期间创建数据库架构,Sun Java System Application Server 将创建具有主键列的方案, 然后在运行时为主键列生成唯一的值。

如果在部署期间未创建数据库架构,则映射表中的主键列必须是 NUMERIC 类型,精度为 19 或更高, 且不要映射到任何 CMP 字段。Sun Java System Application Server 将在运行时为主键列生成唯一的值 。

入门

开始之前,必须在计算机上安装 Sun Java System Application Server Platform Edition 8.1(下 载)。您无法将企业应用程序部署到绑定的 Tomcat 服务器。还必须在 IDE 中注册应用程序服务器,通 过选择 Tools > Server Manager。

本例也可以使用 MySQL 替换 PointBase 作为数据库服务器。若要了解如何在 NetBeans 中和应用程 序服务器上设置 MySQL,请参见此文档。

创建数据库表

我们所使用的范例是一个非常简单的数据库表,列出用户的 ID、last name 和 first name。

在 IDE 中注册 MySQL 驱动程序。在 Runtime 窗口中,展开 Databases > Drivers,右键单击 Drivers 节点并选择 Add Driver。

将连接注册到任一现有 MySQL 数据库。在 Runtime 窗口中,右键单击 MySQL driver 的节点并选择 Connect Using。(有关在 NetBeans IDE 中注册 MySQL 的更多信息,请参见此文档。)

在数据库中创建示例表。右键单击数据库连接的节点并选择 Execute Command。在 Command 字段中, 键入以下命令,然后单击 Execute:

CREATE TABLE customer (
    id BIGINT(19) NOT NULL auto_increment, -- this column will be automat. generated
    lastName varchar(25) NOT NULL,
    firstName varchar(30) default NULL,
    PRIMARY KEY (id));

创建 EJB 模块

从数据库连接生成 CMP beans 时,IDE 将自动把 id 列注册为主键,并为其创建 CMP 字段和 finder 方法。这要求您在能够运行 ejbCreate 方法前已了解主键。

而从应用程序服务器获得主键,您需要编辑 CMP bean,并对部署描述符和 ejbCreate 方法进行适当 更改。

编写 CMP Bean 的代码

从主菜单选择 File > New Project (Ctrl-Shift-N),然后创建名为 CustomerModule 的新 EJB Module 项目。

右键单击 CustomerModule 项目并选择 New > CMP Beans from Database。选择 MySQL 数据库连 接,然后将 org.bank 指定为包。在向导的下一页中,从数据库选择 customer 表,然后单击 Finish。

IDE 将为 customer 表创建 CMP bean。

删除 id CMP 字段。在 Projects 窗口中,展开 Enterprise Beans > CustomerEB > CMP Fields,右键单击 id 节点并选择 Delete。

时间: 2025-01-30 15:25:04

使用CMP Beans生成主键值的相关文章

因为相同类型的其他实体已具有相同的主键值。在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 。。。

因为相同类型的其他实体已具有相同的主键值.在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为.这可能是因为某些实体是新的并且尚未接收数据库生成的键值.在此情况下,使用 "Add" 方法或者 "Added" 实体状态跟踪该图形,然后将非新实体的状态相应设置为 "Unchanged"

Jquery easyui 怎么得到前台的主键值

问题描述 Jquery easyui 怎么得到前台的主键值 Jquery easyui 怎么得到前台的主键值 <t:dgCol title="虚拟中心编号" field="vdnId" queryMode="single" width="120"></t:dgCol> 解决方案 你这个是什么服务器控件,发最终客户端生成的html代码..jquery获取控件自己结合客户端生成的html设置选择器就好 解决

主键值数据类型-informix数据库,不小心把主键值从int8改成float类型了

问题描述 informix数据库,不小心把主键值从int8改成float类型了 informix数据库,不小心把主键值从int8改成float类型了,然后值就变了.有人能帮忙看一下可能原因是什么吗? 解决方案 补充一下,数值由824变成800,转换的是informix数据库的主键值,由int8转为float

JSP中如何取得MSSQL数据库表中自动增长的ID主键值?

JSP中如何取得MSSQL数据库表中自动增长的ID主键值? 如:建一个表student有属性列userid,username其中userid为INT类型只读自动加1的主键(也就是每插入一条记录都会自动加1),那么如何在JSP中得到当前插入行的userid值(比如:我向表里插入了三条记录,在我插入第三条记录时userid的值应为3,那么如何得到这个3)? 先创建存储过程: CREATE PROCEDURE addrec   (   @OutID int output,   @Name varcha

cvs 数据库 主键外键-CVS格式文件数据导入新数据库后自动生成主键外键

问题描述 CVS格式文件数据导入新数据库后自动生成主键外键 以前将数据库中的数据导出来了,后来手贱把给数据库毁了. 现在希望通过以前导出来的CVS文件数据恢复以前的数据库,最好是自动的,主键外键自动关联自动生成[里边表实在太多了]. 什么数据库都行,什么MySQL.SQLServer都可以,只求能重建以前的数据库啊! 不知道各位大神有没有可行的办法啊? 解决方案 没办法,只有数据.需要添加SQL语句

MyBatis获取自增长主键值的两种方式及源码浅析

昨天在做项目的时候遇到了一个坑,没错,就是获取MyBatis自增长主键值的坑.因为之前一直用ibatis,所以惯性的用了ibatis的写法,结果返回的值一直是1(受影响的行数).于是去翻了翻MyBatis的源码,发现它把主键值放到了参数对象上,获取主键值需要用参数对象去get主键值.真是坑.我先把解决办法放出来,然后再接着分析MyBatis的源码是怎么做的. 环境: 数据库MySql.User表,主键设置为自增长. CREATE TABLE `user` ( `id` INT(11) NOT N

不同数据库获取新增加的主键值

获取不同数据库新增记录主键值   数据库  获取新增主键值的SQL语句 DB2 INENTIY_VAL_LOCAL() Informix SELECT dbinfo('sqlca.sqlerrd1') FROM <Table> Sybase SELECT @@IDENTITY SQL Server SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY MySQL SELECT LAST_INSERT_ID() HsqlDB CALL IDENTITY() Clou

mysql insert语句后如何获取insert数据的主键值自动编号

关于mysql教程 insert语句后如何获取insert数据的主键值自动编号呢, 方法很简单的,mysql数据自带的了mysql_insert_id ( );函数 使用方法: insert into(a')values('b') $nid = mysql_insert_id ( ); 方法二: LAST_INSERT_ID(),不过关于这个函数,与mysql_insert_id()比较有很多的区别,mysql_insert_id ()是直接获取当前session的insert_id,而LAST

hibernate 3 注解,sql2005 自增得不到主键值

问题描述 我使用的是Hibernate3+注解+SQL2005开发系统的.我的POJO是这样配置的"java"packagecom.chinaunicom.pt.domain.entity;importjava.util.Date;importjavax.persistence.*;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue