hibernate注解建表问题

问题描述

学习hibernate注解建表的时候出现的问题packagedemo.annotations.entity;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;@Entitypublicclassweapon{privateintid;privateStringnamt;@Id@GeneratedValue(strategy=GenerationType.SEQUENCE)publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetNamt(){returnnamt;}publicvoidsetNamt(Stringnamt){this.namt=namt;}}

=================================================================packagedemo.annotations.entity;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.AnnotationConfiguration;publicclassTestpo{publicstaticAnnotationConfigurationconfig=newAnnotationConfiguration();publicstaticSessionFactorysessionFactory;publicstaticStringcontig_file="/hibernate.cfg.xml";publicstaticvoidmain(String[]args){config.configure(contig_file);sessionFactory=config.buildSessionFactory();Sessionsession=sessionFactory.openSession();Transactiontran=session.beginTransaction();weaponwp=newweapon();wp.setNamt("恐龙");session.save(wp);tran.commit();session.close();}}

提示错误是log4j:WARNNoappenderscouldbefoundforlogger(org.hibernate.cfg.annotations.Version).log4j:WARNPleaseinitializethelog4jsystemproperly.log4j:WARNSeehttp://logging.apache.org/log4j/1.2/faq.html#noconfigformoreinfo.Hibernate:selecthibernate_sequence.nextvalfromdualExceptioninthread"main"org.hibernate.exception.SQLGrammarException:couldnotgetnextsequencevalueatorg.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)atorg.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)atorg.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119)atorg.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:81)atorg.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)atorg.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)atorg.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)atorg.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)atorg.hibernate.impl.SessionImpl.save(SessionImpl.java:551)atorg.hibernate.impl.SessionImpl.save(SessionImpl.java:547)atdemo.annotations.entity.Testpo.main(Testpo.java:24)Causedby:java.sql.SQLException:ORA-02289:序列不存在然后把@GeneratedValue(strategy=GenerationType.SEQUENCE)

句话去掉后报错是log4j:WARNNoappenderscouldbefoundforlogger(org.hibernate.cfg.annotations.Version).log4j:WARNPleaseinitializethelog4jsystemproperly.log4j:WARNSeehttp://logging.apache.org/log4j/1.2/faq.html#noconfigformoreinfo.Hibernate:insertintoweapon(namt,id)values(?,?)Exceptioninthread"main"org.hibernate.exception.SQLGrammarException:CouldnotexecuteJDBCbatchupdateatorg.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)atorg.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)atorg.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)atorg.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)atorg.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)atorg.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)atorg.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)atorg.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)atorg.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)atorg.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)atdemo.annotations.entity.Testpo.main(Testpo.java:28)Causedby:java.sql.BatchUpdateException:ORA-00942:表或视图不存在

解决方案

解决方案二:
确实日志的jar包
解决方案三:
上面帖子中的确实改缺失。
解决方案四:
引用2楼yuxinjian的回复:

上面帖子中的确实改缺失。

大哥你说的是哪个啊包啊拜托啦!!!
解决方案五:
你至少应该为成员属性id,namt加上@Column属性吧
解决方案六:
@GeneratedValue(strategy=GenerationType.SEQUENCE)

GenerationType.SEQUENCE这种主键生成策略是调用底层数据库的序列来生成主键(例如Oracle),楼主用的是什么数据库?如果去掉@GeneratedValue注解(相当于GenerationType.AUTO),那就得手动设置ID值。
解决方案七:
楼上说的不错,你的数据库如果是oracle才用sequence
解决方案八:
你的数据库的方言是oracle吗?如果不是的,请检查以下啊,要换成自己的数据库的方言啊...

时间: 2025-01-21 00:27:52

hibernate注解建表问题的相关文章

请教老鸟 hibernate注解 数据表的创建问题

问题描述 请教老鸟 hibernate注解 数据表的创建问题 在学习学习hibernate的时候,使用注解进行表的创建,Java项目里可以,但是java web里面却是不可以 报错 解决方案

hibernate自动建表到数据库及spring下自动建表到数据库

Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<property name="hbm2ddl.auto">update</property>     update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:

关于hibernate 自动建表问题

问题描述 packagecom.web.cn.entity;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;importorg.apache.lucene

spring-Hibernate+Spring整合后自动建表问题

问题描述 Hibernate+Spring整合后自动建表问题 我测试了一个项目,初期没有问题,但是当我修改了自动生成的数据信息后发现,重新部署后数据仍然为原来的信息,接着我尝试了修改表名,重新部署后表名也和原来一样. 以下是配置信息: Hibernate: <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="jdbc.batc

java web-Hibernate根据注解自动建表,有的表新建出错是什么原因

问题描述 Hibernate根据注解自动建表,有的表新建出错是什么原因 项目是自己的毕业设计,当时是没什么问题,但是时过几个月,现在重新运行,发现有两张表始终无法新建, 那好吧,我自己手动建,但是此时我的hbm2ddl.auto=update,当启动tomcat,update到这张表的时候,tomcat直接卡在这里,然后就提示超时了,不知道是什么原因 Hibernate相关属性配置 dataSource.driverClassName=oracle.jdbc.driver.OracleDrive

mysql-测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分

问题描述 测试hibernate框架自动建表并保存数据,没报错,但数据只保存了一部分 解决方案 因为你去给Product这个对象创建三个实例,pro.pro2.pro3,对吧,然后你不停的给pro去赋值(pro.setName()),最后pro的最后一个值把前两个覆盖掉了,所以只添加了一个棉花糖.正确的方式是要给每个,你把第29行改成pro2.setName():30行pro2.setDir():33行pro3.setName():34行pro3.setDir(),就万事大吉了,祝你成功! 解决

为什么我用hibernate建表会出现如此诡异的情况?

问题描述 最近在学着用anotation配置hibernate,结果发现一些诡异的情况--实体类:ackage com.yyz.beans;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import ja

请问这个实体的注解写的有问题吗,为什么不能建表

问题描述 请问这个实体的注解写的有问题吗,为什么不能建表 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity(name="readdress") public class ReAddress{ @Id @GeneratedValue(st

Hibernate -- 注解(Annotation)关系映射

转自:http://www.cnblogs.com/tyler2000/archive/2011/01/20/1940354.html 1. Hibernate Annotation关系映射有下面几种类型:1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要)在这不演示 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数