学习hibernate @Entity该导入哪个包
1.在@Entity时很容易顺手导入@org.hibernate.annotations.Entity这个包,结果导致了异常。其实应该导入的是@javax.persistence.Entity
Always import @javax.persistence.Entity
@org.hibernate.annotations.Entity是@javax.persistence.Entity的一个补充,但不是后者的替代品
如果import @org.hibernate.annotations.Entity的话,会报异常。
如果想使用@org.hibernate.annotations.Entity所包含的特殊的功能的话,需要在import @javax.persistence.Entity的基础上增加注释,如下:
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
在加注释的时候:
1.spring 是set
2.hibernate是get
2. Hibernate常用Annotation标签说明
@ javax.persistence.Entity
实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表
位置:用于类级别
参数:无
样例:@Entity
注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Entity
@javax.persistence.Table
实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表
位置:用于类级别
参数:name – 用于指定表名,如果不指定则表名与类名相同,考虑到不同数据库的解析方式可能不一样,建议手工指定表名。表名统一用大写字母,单词之间用下划线分隔。
样例:@Table(name=”DAT_USER_INFO”)
注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Table
@ javax.persistence.Id
该标签用于标识数据实体的主键
位置:用于主键属性的Get方法,QFrame约定为getId()方法
参数:无
样例:@Id
@ javax.persistence.GeneratedValue
定义主键生成方式,通常和@ org.hibernate.annotations.GenericGenerator一同使用,用于生成主键。
位置:用于主键属性的Get方法,QFrame约定为getId()方法。
参数:strategy -构造方式;generator -构造器名称。
样例:
1、 由Hibernate自动生成主键:@GeneratedValue(strategy=GenerationType.AUTO)
2、 根据主指构造器生成主键:@GeneratedValue(generator="assigned")
@ org.hibernate.annotations.GenericGenerator
Hibernate提供的主键构造器。通常与@GeneratedValue配合使用。
位置:用于主键属性的Get 方法。
参数:name -构造器名称,在@GeneratedValue 中引用;strategy -构造方式。
样例:
1. 手工指定的主键:
@GeneratedValue(generator="assigned")
@GenericGenerator(name = "assigned", strategy = "assigned")
2. 从Sequence 获取主键:
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="TASK_SEQ")
@SequenceGenerator(name="TASK_SEQ",sequenceName="SEQ_GROUP_SEND_TASK")
@ javax.persistence.Column
用于表示实体属性对应数据库表的哪个字段。
位置:用于属性的Get 方法
参数:
name – 字段名,默认为属性名,建议手工指定,字段名统一使用大写字母
nullable -boolean 值,表示该属性是否可以为空,默认为true。
insertable -boolean 值,表示该属性是否在insert语句中包含,默认为true。
updatable -boolean 值,表示该属性是否在update 语句中包含,默认为true。
length -int值,表示该属性值的长度,通常用于字符串属性,默认为255。
unique -boolean 值,表示该属性值是否建立唯一索引,默认为false。
@ javax.persistence.Transient
用于标识不在数据库表中映射的属性。
位置:用于属性的Get 方法
参数:无
@ org.hibernate.annotations.Type
自定义类型,将属性用于自定义类型。通常用于定义枚举类型。
位置:用于属性的Get 方法
参数:type -类型完成名称(包含包名)
样例:@Type(type="net.osjava.xsmfms.entity.SendTypeDataType")
学习hibernate @Entity该导入哪个包的更多相关文章
- android studio学习----通过gradle来导入jar包
转载地址:http://www.th7.cn/Program/Android/201507/495477.shtml File->Project Structure 可以打开下面的图: 1.通过 ...
- android studio学习----通过libs来导入jar包
百度经验有一种方法: 1 点击启动AndroidStudio,启动后的界面如图所示. 2 复制你需要添加的jar,并将其黏贴到app— —src— —main— —libs文件夹下,可运行的Andro ...
- hibernate课程 初探单表映射1-6 hibernate项目建立以及导入jar包
hibernate 项目建立 1 new ==>java project hibernate 导入jar包 1 windows==>prerence==>java ==>bui ...
- Servlet学习之Maven导入Servlet-api包与Tomcat冲突报500问题
Maven导入Servlet-api包导致无法运行报500的问题 以下解决方式适用于跟我类似的配置环境,构建servlet程序后,启动Tomcat页面报"类com.tioxy.servlet ...
- 学习hibernate笔记
曾经学习java的时候,一開始就学习了hibernate,那时候总认为ssh很高大上,所以就急忙看了下相关视频.只是由于实际须要不高,所以后来一直没有使用上hibernate组件.如今一年过去了,也疯 ...
- 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架
这篇博客是hibernate学习的第一篇,主要简介hibernate框架,之后简单说一下hibernate的文件夹结构,最后写一个简单的hibernate实例.通过这三步来简单的认识一下hiberna ...
- ssh整合,导入structs包后报错 getAnnotation(AnnotatedElement ae,Class<T> annotatetype)找不到
今天在整合ssh(spring-framework-3.2.5.RELEASE-dist+struts-2.3.15.3-all+hibernate-release-4.2.6.Final)环境的时候 ...
- 菜鸟学习Hibernate——配置Hibernate环境
一.概念. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.既然学习Hibernate那么第 ...
- 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例
一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...
随机推荐
- formValidator的一些验证实例
原帖地址:http://www.cnblogs.com/talk/archive/2012/01/29/2330887.html $(function () { try { $.formValidat ...
- session会话复制
前几天请教了Yoda大神关于会话复制方面的问题, 如果客户访问是两个服务器的东西,这样会有两个分别的session, 这两个session之间怎么交互,集群环境下,同构的服务器,专业术语 ...
- SQLMAP脱裤
之前就有一个朋友问,咋使用sqlmap脱裤.然后我丢了一个参数给他,他好像懵逼懵逼的.今天又有一个哥们儿在群里问,行吧.就直接教一下. 其实很简单. --dump这个参数就是用来脱裤的哟.如果你要拖整 ...
- Sqli-LABS通关笔录-16
这个关卡之前我还使用了一下工具跑,发现居然跑不出来.这就尴尬了.行吧手工试试. payload admin") and If(ascii(substr(database(),1,1))=11 ...
- PHP中面相对象对象的知识点整理
面向对象 万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性. ___________ ...
- Dex动态加载
Dex动态加载是为了解决什么问题? 在Android系统中,一个App的所有代码都在一个Dex文件里面. Dex是一个类似Jar的存储了多个Java编译字节码的归档文件. 因为Android系统使用D ...
- apscheduler 绿色版
由于依赖EntryPoint,因此apscheduler在离线的方式(直接拷贝然后引用)使用时,会报错. 错误信息类似: No trigger by the name “interval/cron/d ...
- 【MySQL】MySQL 如何实现 唯一随机数ID
如果不是 UUID 好像比较困难 参考资料: http://bbs.csdn.net/topics/390001507 https://www.zhihu.com/question/20151242
- [转载]python gevent
原地址: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001407503089 ...
- 用Javascript主动更行URL
参考---ttp://www.oschina.net/translate/manipulating-url-using-javascript-without-freshing-the-page var ...