hibernate学习(二)----初识标签

hibernate中annotation各标签和相对的hibernate core3中的xml对比

annotation

@Entity 和@Id最基本的功能,@Id对应的是主键的属性

 

@table(name="**")  当数据库表名和设置的属性名不一致时,name给出了数据库表中的名字

 

@Id @genertorValue  默认的是auto自增属性,可以有sequence,identity,table,前两者主要是数据库不同,选用不同。如mysql是identity,oracl是sequence,

 

@column(name="**")当数据库表名和设置的属性名不一致时,name给出数据库属性名,当然column还有别的用,比如:更新数据库时, @Column(updatable=false),默认是true,不让那个属性更新

 

@Transient让其非持久化,就是不写入数据库表中

 

@Temporal(TemporalType.TIME)时间date的用法,有date,time,timestamp,故名思议

 

@Enumerated(EnumType.STRING)枚举类型有两种,EnumType.ORDINAL,EnumType.对应int和string,取值时,

t.setZhichen(ZhiChen.B);注意注意

 

xml相应的比对

<class name="Teacher" table = "Teacher">   //table改相应的数据库表名,如果没有,默认和属性名一样
<id name="id" column="id" >   //主键的改名
<generator class="identity"></generator>//相当于@Id @genertorValue的自增,默认为native,常用identity,sequence,uuid,前两个根据数据不同来定,后面那个生成特定的数

</id>
<property name="name" />   不设置类型,系统会自动匹配
<!--<property name="title" />-->//屏蔽掉相当于@Transient用

<property name="date" type="timestamp"/>   //时间类型的设置,这个type必须要写
</class>

枚举xml实现很复杂,不讨论

 

问题:今天在试验,xml自增时,老是报错org.hibernate.exception.DataException: could not insert

以及id field没设置

貌似是生成的表和后面update有冲突,把表删除,用create解决

warn提示:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.

是由slf4j-api-1.5.8.jar这个是接口,log4j12-1.2.14jar,具体实现,slf4j-log4j12-1.5.8.jar,转换的包,让slf4j转成log4j,而尚学堂视频,前面例子用的是slf4j-nop-1.5.8.jar来实现日志功能,不存在转换,也没有log4j,所以不会报错。这个后面看sql语句时,log4j很有必要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值