两种Domain Entity生成方式

建立Eclipse JPA工程逆向工程生成实体类,表字段的注解在实体类属性声明上。

类似操作参考:http://my.oschina.net/hcliu/blog/401262

通过HibernateTools逆向工程生成的实体类,表字段的注解在实体类属性的get方法上。

类似操作参考:http://wenku.baidu.com/link?url=ErBxRPvuMswqqaxEcHAdEKK4qd93WAt4Z4EvbsA3NSaJXRPmTKV-kZN3uBzupcgd1Ylj6C7QHPz05Nr7FFktzHQwj0r92EARI1fKxfz2wRG


逆向工程开始之前,最好通过DatabaseManagement弄一个数据库连接

<think> 我们正在讨论PowerDesigner中为Entity的属性设置枚举类型(ENUM)的方法。 根据PowerDesigner的使用,设置枚举类型通常是在属性的数据类型中进行设置。 步骤大致如下: 1. 打开实体(Entity)的属性窗口(双击实体)。 2. 在属性窗口中选择“Attributes”选项卡。 3. 选择要设置枚举类型的属性,点击编辑(或直接双击该属性)。 4. 在属性的编辑窗口中,找到“Data Type”设置。 5. 在“Data Type”中,我们可以输入枚举类型的定义,通常的格式是:`ENUM('value1','value2',...)`,例如:`ENUM('Y','N')`。 6. 另外,也可以在Data Type的下拉菜单中选择“Edit”来打开数据类型编辑器,然后选择“User-Defined Data Type”来创建一个用户自定义类型(枚举类型),然后在实体属性中引用。 但是,需要注意的是,PowerDesigner中并没有直接的枚举类型设置,而是通过用户自定义数据类型(User-Defined Data Type)来实现枚举类型的效果。 具体操作步骤(使用用户自定义数据类型): 1. 在菜单栏中选择“Model” -> “User-Defined Data Types...”,打开用户自定义数据类型管理窗口。 2. 点击“Add a Row”按钮(一般是一个带加号的纸张图标),输入数据类型的名称(例如:my_enum),并在“Code”中填写代码(同上)。 3. 在“Data Type”字段中填写枚举定义,例如:`ENUM('Y','N')`(根据实际需要填写枚举值)。 4. 然后在实体的属性中,将数据类型选择为我们刚刚定义的用户自定义数据类型“my_enum”。 另外,如果希望枚举类型在多个实体中复用,使用用户自定义数据类型是更好的选择。 注意:在生成数据库脚本时,PowerDesigner会根据目标数据库的不同生成相应的枚举类型定义(如果目标数据库支持枚举类型,如MySQL)。如果目标数据库不支持(如Oracle),则可以考虑使用检查约束(Check Constraint)来实现,但用户自定义数据类型在生成时可能会转换为基础类型(如VARCHAR),然后需要手动添加检查约束。 因此,我们可以总结为两种方法: 方法一(直接设置): 在属性的Data Type中直接输入枚举定义(如`ENUM('Y','N')`)。这种方法简单,但不利于复用。 方法二(使用用户自定义数据类型): 1. 创建用户自定义数据类型,设置其数据为枚举定义。 2. 在实体属性中选择该用户自定义数据类型。 下面我们以PowerDesigner 16.5为例,图文说明可能更清晰,但这里无法提供图片,因此描述步骤。 另外,如果用户使用的是最新版本的PowerDesigner,界面可能略有不同,但基本思路一致。 补充:对于不支持枚举类型的数据库,我们可能需要使用检查约束。在PowerDesigner中,我们可以在属性的检查约束中设置。具体步骤如下: 1. 在实体属性的编辑窗口中,选择“Standard Checks”选项卡。 2. 在“List of values”中填写枚举值,用分号隔开(例如:'Y';'N')。 这样,在生成数据库脚本时,PowerDesigner会为这个字段生成一个检查约束,确保只能输入枚举值。 所以,根据目标数据库的不同,可以选择不同的实现方式。 总结: 如果目标数据库支持枚举类型(如MySQL): 推荐使用方法一或方法二(直接输入枚举类型定义或使用用户自定义数据类型)。 如果目标数据库不支持枚举类型(如Oracle): 则使用检查约束(在属性的Standard Checks中设置List of values)。 注意:在PowerDesigner中,我们也可以使用域(Domain)来定义,但域用户自定义数据类型类似,也可以复用。 由于用户的问题是如何设置枚举类型,我们提供了多种方法,用户可以根据实际情况选择。 现在生成相关问题: 1. 在PowerDesigner中如何为实体属性设置检查约束(Check Constraint)? 2. PowerDesigner中的用户自定义数据类型(User-Defined Data Type)域(Domain)有什么区别? 3. 如何让PowerDesigner在生成SQL脚本时根据不同的数据库生成不同的枚举类型实现(例如MySQL用ENUM,Oracle用检查约束)? </think>在 PowerDesigner 中为实体(Entity)属性设置枚举类型的方法如下: ### 方法 1:直接定义枚举值(推荐) 1. **打开实体属性窗口** 双击实体 → 进入属性窗口 → 切换到 **Attributes** 标签页 <br>![实体属性窗口示意图](https://example.com/pd-entity-attributes.png)[^1] 2. **编辑目标属性** 双击需要设置枚举的字段 → 打开属性详情窗口 3. **设置枚举值** - 在 **Data Type** 字段输入枚举格式:`ENUM('value1','value2',...)` 示例:`ENUM('Active','Inactive','Pending')` - **取消勾选** `Mandatory` 下方的 `Use domain`(如已勾选) <br>![数据类型设置示意图](https://example.com/pd-enum-datatype.png)[^2] 4. **验证效果** 返回实体图 → 字段将显示为类似:`status ENUM('Active','Inactive')` --- ### 方法 2:通过域(Domain)定义(可复用) 1. **创建枚举域** `Model` → `Domains` → 新建域(如 `StatusEnum`)→ 在 `Data Type` 中填写: ```sql ENUM('Active','Inactive','Pending') ``` 2. **关联到实体属性** 编辑实体属性 → 在 `Domain` 下拉菜单中选择刚创建的域 → 勾选 `Use domain` --- ### 生成 SQL 的效果 生成的 DDL 语句将包含枚举定义(以 MySQL 为例): ```sql CREATE TABLE employee ( status ENUM('Active','Inactive','Pending') NOT NULL ); ``` > ⚠️ **注意** > - 枚举定义需符合目标数据库语法(如 MySQL/Oracle 支持 `ENUM`,SQL Server 需用 `CHECK` 约束) > - 在模型验证阶段会检查输入值是否符合枚举范围[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值