JavaBean实体类的属性类型不能使用基本类型,需要使用对应的包装类型(引用类型);这样就可以和数据库中的NULL值进行映射。
没有主键id的数据库表,Hibernate不会与实体类进行映射。
src/cn/xxx/domain/Customer.hbm.xml(Customer实体类与数据表的映射关系配置文件,主键生成策略):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.xxx.domain" >
<class name="Customer" table="cst_customer" >
<id name="cust_id" >
<!-- generator:主键生成策略.就是添加记录时,主键的生成规则.(7个)
identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.(数据库自身维护主键)
sequence: Oracle中的主键生成策略.(数据库自身维护主键)
increment(了解): 主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.(线程不安全)
hilo(了解): 高低位算法.主键自增.由hibernate来维护.开发时不使用.(主键一般由数据库自身维护,不需要由hibernate来维护)
native:hilo+sequence+identity 自动三选一策略.
uuid: 产生随机字符串作为主键. 主键类型必须为string 类型.
assigned:自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
-->
<generator class="native"></generator>
</id>
<property name="cust_name" column="cust_name" ></property>
<property name="cust_source" column="cust_source" ></property>
<property name="cust_industry" column="cust_industry" ></property>
<property name="cust_level" column="cust_level" ></property>
<property name="cust_linkman" column="cust_linkman" ></property>
<property name="cust_phone" column="cust_phone" ></property>
<property name="cust_mobile" column="cust_mobile" ></property>
</class>
</hibernate-mapping>