使用Hibernate注解Annotations进行对象映射的异常处理
通过Hibernate注解Annotations进行对象映射,想在Oracle数据库中自动创建表,代码如下:
实体类:
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Weapon {
private long id;
private String name;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
public long getId() {
return id;}
public void setId(long id) {
this.id = id;}
@Basic
public String getName() {
return name;}
public void setName(String name) {
this.name = name;}}
hibernate.cfg.xml中:
mapping class="demo.annotations.entity.Weapon"
测试类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import demo.annotations.entity.Weapon;
public class TestAnnotations {
public static AnnotationConfiguration config2=new AnnotationConfiguration();
public static SessionFactory sessionFactory;
public static String config_file="/hibernate.cfg.xml";
public static void main(String[] args) {
config2.configure(config_file);
sessionFactory=config2.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Weapon weapon=new Weapon();
weapon.setName("屠鹰刀");
session.save(weapon);
tx.commit();
session.close();}}
运行的时候接连出现异常:首先抛出了无法找到执行类的定义的异常:
ava.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/
仔细检查后:发现少导入了一个hibernate-commons-annotations.jar的包,使用Hibernate注解需要三个jar包:ejb3-persistence.jar、hibernate-annotations.jar和hibernate-commons-annotations.jar包。
导入jar包后继续运行,又报了新的异常:
890 ERROR JDBCExceptionReporter:101 - ORA-02289: 序列不存在
Hibernate: select hibernate_sequence.nextval from dual
859 WARN JDBCExceptionReporter:100 - SQL Error: 2289, SQLState: 42000
于是开始思考数据库中的序列怎么与表进行关联的问题,审视异常信息后,我把数据库中的序列名称改为了hibernate_sequence,终于渡过这个异常。因为我在@GeneratedValue中设置的是通过sequence自动生成主键武器编号,所以必须要有相应的序列与Weapon表中的主键对应。
然而天公不作美,此时还是没有成功,报的是表或视图不存在的异常:
265 ERROR JDBCExceptionReporter:101 - ORA-00942: 表或视图不存在
265 WARN JDBCExceptionReporter:100 - SQL Error: 942, SQLState: 42000
这个异常让我丈二和尚抓不着头脑了,注解不能自动地生成表吗?还是我的jar包有问题?我开始总纠结于自己的jar包,怎么调整都不起作用。于是又进行了各种胡乱的尝试,均不成功,开始有些崩溃了。经过屡番失败,在hibernate.cfg.xml中加入property name="hibernate.hbm2ddl.auto" update property,执行成功!
这句话的含义是:只是根据映射文件去和数据库中的表对应起来,如果不一致,就更新表的结构。在自动创建表的环节中需要。这样就正确的建立了Weapon表并且成功添加了一条数据。
转载于:https://www.cnblogs.com/telwanggs/p/5357898.html
使用Hibernate注解Annotations进行对象映射的异常处理相关推荐
- hibernate注解方式来处理映射关系
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...
- Hibernate注解完整文档
第 2 章 实体Bean 第 2 章 实体Bean 2.1. 简介 本章内容覆盖了EJB3.0实体bean的注解规范以及Hibernate特有的扩展. 2.2. 用EJB3注解进行映射 现 ...
- Hibernate 注解映射
首先要创建要映射的实体类 一对多映射,一个人可以有多个收货地址 User.java package star.july.b_annotation; import java.util.HashSet; ...
- hibernate annotation注解方式来处理映射关系
2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟 ...
- java静态注解处理器_java – 使用mapstruct中的builder(使用immutables注释处理器)将对象映射到不可变对象...
我们使用 immutables framework生成所有DTO.现在我们想用 mapstruct将这些对象映射到另一个.但生成的DTO是不可变的,没有setter,也没有构造函数,对应于builde ...
- Hibernate注解使用以及Spring整合
(1) 简介: 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiber ...
- Hibernate注解详解(超全面)
注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你 ...
- 叮咚,Redis OM对象映射框架来了
叮咚,Redis OM对象映射框架来了! 一.Redis OM来了 11月23日,redis宣布了四个新的Redis高级客户端的预览版,将这些库称为Redis OM(Redis Object Mapp ...
- 重磅发布:Redis 对象映射框架来了,操作大大简化!
欢迎关注方志朋的博客,回复"666"获面试宝典 前言 最近,Redis 官方博客宣布推出四个用于 Redis 的客户端工具库:Redis OM(对象映射库,Object Mappi ...
最新文章
- Laravel Lumen之Eloquent ORM使用速查-基础部分
- PostgreSQL教程(二):SQL语言
- CreateProcess 重定向CMD实现反弹shell
- jQuery获取时间,一位数则补零
- pyqt5讲解12:自定义参数 (给信号传入参数)
- 通过java.net.URLConnection发送HTTP请求的方法
- 贝塞尔修正_贝塞尔修正背后的推理:n-1
- SpringMVC实战(注解)
- python-模块-pymysql操作数据库
- js深拷贝和浅拷贝对数组的影响_javaScript中的深拷贝和浅拷贝
- 大数据可视化搭建存在哪些难题
- C#——已知两点及半径,求圆心坐标
- 程序员今年最值得关注的 23 种新移动技术
- android 强制横屏布局,Activity强制横竖屏和全屏的方法
- matplotlib.pyplot 标记出曲线上最大点和最小点的位置
- Intellij Error:java: Compilation failed: internal java compiler error
- android ip地址,手机号码,邮箱格式验证
- android 小视频添加水印,安卓手机怎么给视频加水印 视频加水印的手机软件|微信小视频怎么加水印...
- 使用ffmpeg将多个TS视频拼接成mp4视频
- 虚拟化技术加速Android模拟器尝试
热门文章
- Scala 函数式编程
- (72)FPGA约束效率(防止过约束)
- (49)FPGA面试技能提升篇(仿真加速平台Palladium、Zebu、Veloce)
- linux服务器用户组和权限管,linux 用户管理,用户权限管理,用户组管理
- 函数平移口诀_初三二次函数平移规律的口诀
- 11.QT中同一个源文件对应两个不同的ui
- apb外设怎么分配地址
- Linux内核网络协议栈5-socket地址绑定
- 内核中的UDP socket流程(3)(4)——sock_create
- [C++] - private static成员函数