通过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进行对象映射的异常处理相关推荐

  1. hibernate注解方式来处理映射关系

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...

  2. Hibernate注解完整文档

    第 2 章 实体Bean       第 2 章 实体Bean 2.1. 简介 本章内容覆盖了EJB3.0实体bean的注解规范以及Hibernate特有的扩展. 2.2. 用EJB3注解进行映射 现 ...

  3. Hibernate 注解映射

    首先要创建要映射的实体类 一对多映射,一个人可以有多个收货地址 User.java package star.july.b_annotation; import java.util.HashSet; ...

  4. hibernate annotation注解方式来处理映射关系

    2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟 ...

  5. java静态注解处理器_java – 使用mapstruct中的builder(使用immutables注释处理器)将对象映射到不可变对象...

    我们使用 immutables framework生成所有DTO.现在我们想用 mapstruct将这些对象映射到另一个.但生成的DTO是不可变的,没有setter,也没有构造函数,对应于builde ...

  6. Hibernate注解使用以及Spring整合

    (1) 简介: 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiber ...

  7. Hibernate注解详解(超全面)

    注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你 ...

  8. 叮咚,Redis OM对象映射框架来了

    叮咚,Redis OM对象映射框架来了! 一.Redis OM来了 11月23日,redis宣布了四个新的Redis高级客户端的预览版,将这些库称为Redis OM(Redis Object Mapp ...

  9. 重磅发布:Redis 对象映射框架来了,操作大大简化!

    欢迎关注方志朋的博客,回复"666"获面试宝典 前言 最近,Redis 官方博客宣布推出四个用于 Redis 的客户端工具库:Redis OM(对象映射库,Object Mappi ...

最新文章

  1. Laravel Lumen之Eloquent ORM使用速查-基础部分
  2. PostgreSQL教程(二):SQL语言
  3. CreateProcess 重定向CMD实现反弹shell
  4. jQuery获取时间,一位数则补零
  5. pyqt5讲解12:自定义参数 (给信号传入参数)
  6. 通过java.net.URLConnection发送HTTP请求的方法
  7. 贝塞尔修正_贝塞尔修正背后的推理:n-1
  8. SpringMVC实战(注解)
  9. python-模块-pymysql操作数据库
  10. js深拷贝和浅拷贝对数组的影响_javaScript中的深拷贝和浅拷贝
  11. 大数据可视化搭建存在哪些难题
  12. C#——已知两点及半径,求圆心坐标
  13. 程序员今年最值得关注的 23 种新移动技术
  14. android 强制横屏布局,Activity强制横竖屏和全屏的方法
  15. matplotlib.pyplot 标记出曲线上最大点和最小点的位置
  16. Intellij Error:java: Compilation failed: internal java compiler error
  17. android ip地址,手机号码,邮箱格式验证
  18. android 小视频添加水印,安卓手机怎么给视频加水印 视频加水印的手机软件|微信小视频怎么加水印...
  19. 使用ffmpeg将多个TS视频拼接成mp4视频
  20. 虚拟化技术加速Android模拟器尝试

热门文章

  1. Scala 函数式编程
  2. (72)FPGA约束效率(防止过约束)
  3. (49)FPGA面试技能提升篇(仿真加速平台Palladium、Zebu、Veloce)
  4. linux服务器用户组和权限管,linux 用户管理,用户权限管理,用户组管理
  5. 函数平移口诀_初三二次函数平移规律的口诀
  6. 11.QT中同一个源文件对应两个不同的ui
  7. apb外设怎么分配地址
  8. Linux内核网络协议栈5-socket地址绑定
  9. 内核中的UDP socket流程(3)(4)——sock_create
  10. [C++] - private static成员函数