hibernate中的<generater class="native">什么意思

博客介绍了native和assigned的含义,native表示自动生成,无需人工管控;assigned表示指定、分配,需人工赋予。在用Hibernate时,表主键库自动生成用native,自己添加则用assigned,还提到建表时不同主键类型的对应策略。

native有天生的,本土的,也就是说生来就有的,
那也就是说自动生成,不需要人工来帮忙或者管控的.
而assigned是指指定的,分配的,
如果你不赋予他甚麼东西,那麼他是不能实现的.
需要人工,自己把某个东西赋予给它
所以是assigned
在用Hibernate的时候,当有表中的主键是库自动生成的时候将使用native。

而当是自己添加的时候则需要改为assigned。

否则将会出现异常!
如果建表时,该表主键类型是integer,并设置成auto-increment,用native;该表主键类型是string类型的,用uuid.hex

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping package="com.smics.apps.etst.domain.admin"> <class name="GroupFields"> <id name="id"> <generator class="native"/> </id> <property name="fieldsName" length='255'/> <property name="employeeNo" length='60'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> <class name="ReasonCode"> <id name="id"> <generator class="native"/> </id> <property name="codeType" length='20'/> <property name="smicTermCode" length='255'/> <property name="custCode" length='60'/> <property name="custTermCode" length='255'/> <property name="description" length='500'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> <class name="ResponserDept"> <id name="id"> <generator class="native"/> </id> <property name="orgId" length='255'/> <property name="deptName" length='255'/> <property name="secName" length='255'/> <property name="magrId" length='10'/> <property name="costCode" length='20'/> <property name="pieVerify" length='20'/> <property name="pieSite" length='20'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> <query name="findGroupByMember"><![CDATA[ from GroupFields g where g.employeeNo = ? ]]></query> <query name="findCccByMagrId"><![CDATA[ from ResponserDept g where g.magrId = ? ]]></query> <query name="findResponserDeptByOrgId"><![CDATA[ from ResponserDept g where g.orgId = ? ]]></query> <query name="findResDeptByDeptSec"><![CDATA[ from ResponserDept g where g.deptName = ? and g.secName = ? ]]></query> <query name="findResSecByDept"><![CDATA[ from ResponserDept g where g.deptName = ? ]]></query> <query name="findReasonCodeByCodeType"><![CDATA[ from ReasonCode r where r.codeType = ? ]]></query> </hibernate-mapping>
最新发布
08-29
你提供的这个 `hibernate-mapping` 文件是 Hibernate 的映射文件,用于将 Java 实体类(如 `GroupFields`、`ReasonCode`、`ResponserDept`)**映射到数据库表结构**,并定义了查询语句。 --- ## ✅ 映射文件结构分析 ### 根节点 ```xml <hibernate-mapping package="com.smics.apps.etst.domain.admin"> ``` - 指定了这些类所在的包名:`com.smics.apps.etst.domain.admin`。 - 所有 `<class>` 标签中 `name` 属性只需写类名即可。 --- ## 📦 实体类映射分析 ### 1. **GroupFields** ```xml <class name="GroupFields"> <id name="id"> <generator class="native"/> </id> <property name="fieldsName" length='255'/> <property name="employeeNo" length='60'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> ``` - 映射到数据库表(默认为 `GROUP_FIELDS`)。 - 包含字段: - `id`:主键,自增(`native` 表示使用数据库自增机制) - `fieldsName`:字段名(长度 255) - `employeeNo`:员工编号(长度 60) - `createDate`:创建时间(无长度限制) - `createdBy`:创建人(长度 60) --- ### 2. **ReasonCode** ```xml <class name="ReasonCode"> <id name="id"> <generator class="native"/> </id> <property name="codeType" length='20'/> <property name="smicTermCode" length='255'/> <property name="custCode" length='60'/> <property name="custTermCode" length='255'/> <property name="description" length='500'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> ``` - 映射到数据库表(默认为 `REASON_CODE`)。 - 包含字段: - `codeType`:代码类型(长度 20) - `smicTermCode`:SMIC 术语代码(长度 255) - `custCode`:客户代码(长度 60) - `custTermCode`:客户术语代码(长度 255) - `description`:描述(长度 500) - `createDate`:创建时间 - `createdBy`:创建人 --- ### 3. **ResponserDept** ```xml <class name="ResponserDept"> <id name="id"> <generator class="native"/> </id> <property name="orgId" length='255'/> <property name="deptName" length='255'/> <property name="secName" length='255'/> <property name="magrId" length='10'/> <property name="costCode" length='20'/> <property name="pieVerify" length='20'/> <property name="pieSite" length='20'/> <property name="createDate" /> <property name="createdBy" length='60'/> </class> ``` - 映射到数据库表(默认为 `RESPONSER_DEPT`)。 - 包含字段: - `orgId`:组织 ID(长度 255) - `deptName`:部门名称(长度 255) - `secName`:科室名称(长度 255) - `magrId`:主管 ID(长度 10) - `costCode`:成本中心代码(长度 20) - `pieVerify`:是否需要 PIE 验证(长度 20) - `pieSite`:站点(长度 20) - `createDate`:创建时间 - `createdBy`:创建人 --- ## 🔍 查询语句(NamedQuery) Hibernate 支持通过 `<query>` 标签定义命名查询(NamedQuery),这些查询可以在代码中通过名称调用。 ### 示例: ```xml <query name="findGroupByMember"><![CDATA[ from GroupFields g where g.employeeNo = ? ]]></query> ``` 在 Java 代码中可以这样调用: ```java List result = findByNamedQuery("findGroupByMember", empNo); ``` --- ## 📋 常用命名查询列表 | 查询名称 | HQL 语句 | 说明 | |----------|----------|------| | `findGroupByMember` | `from GroupFields g where g.employeeNo = ?` | 根据员工编号查找分组 | | `findCccByMagrId` | `from ResponserDept g where g.magrId = ?` | 根据主管 ID 查找成本中心 | | `findResponserDeptByOrgId` | `from ResponserDept g where g.orgId = ?` | 根据组织 ID 查找响应部门 | | `findResDeptByDeptSec` | `from ResponserDept g where g.deptName = ? and g.secName = ?` | 根据部门和科室查找响应部门 | | `findResSecByDept` | `from ResponserDept g where g.deptName = ?` | 根据部门查找科室 | | `findReasonCodeByCodeType` | `from ReasonCode r where r.codeType = ?` | 根据代码类型查找原因码 | --- ## ✅ 总结 | 类名 | 数据库表 | 主要字段 | |------|----------|----------| | `GroupFields` | `GROUP_FIELDS` | `id`, `fieldsName`, `employeeNo`, `createDate`, `createdBy` | | `ReasonCode` | `REASON_CODE` | `id`, `codeType`, `smicTermCode`, `custCode`, `description` | | `ResponserDept` | `RESPONSER_DEPT` | `id`, `orgId`, `deptName`, `secName`, `magrId`, `costCode` | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值