hibernate注解建表问题

buzhidao1123 2014-12-14 08:08:14
学习hibernate 注解建表的时候 出现的问题
package demo.annotations.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
public class weapon {

private int id;
private String namt;

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNamt() {
return namt;
}
public void setNamt(String namt) {
this.namt = namt;
}

}

=================================================================
package demo.annotations.entity;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

public class Testpo {

public static AnnotationConfiguration config=new AnnotationConfiguration();
public static SessionFactory sessionFactory;
public static String contig_file="/hibernate.cfg.xml";

public static void main(String []args) {

config.configure(contig_file);
sessionFactory=config.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tran=session.beginTransaction();

weapon wp=new weapon();

wp.setNamt("恐龙");
session.save(wp);



tran.commit();
session.close();

}
}

提示错误 是
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate: select hibernate_sequence.nextval from dual
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119)
at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:81)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
at demo.annotations.entity.Testpo.main(Testpo.java:24)
Caused by: java.sql.SQLException: ORA-02289: 序列不存在
然后把
@GeneratedValue(strategy=GenerationType.SEQUENCE)
句话去掉后报错是
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate: insert into weapon (namt, id) values (?, ?)
Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at demo.annotations.entity.Testpo.main(Testpo.java:28)
Caused by: java.sql.BatchUpdateException: ORA-00942: 表或视图不存在
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
microhex 2014-12-16
  • 打赏
  • 举报
回复
你的数据库的方言是oracle吗?如果不是的,请检查以下啊,要换成自己的数据库的方言啊...
Mr_sqw 2014-12-15
  • 打赏
  • 举报
回复
你至少应该为成员属性id,namt加上@Column属性吧
  • 打赏
  • 举报
回复
楼上说的不错,你的数据库如果是oracle才用sequence
howsun_zh 2014-12-15
  • 打赏
  • 举报
回复

@GeneratedValue(strategy=GenerationType.SEQUENCE)
GenerationType.SEQUENCE这种主键生成策略是调用底层数据库的序列来生成主键(例如Oracle),楼主用的是什么数据库? 如果去掉@GeneratedValue注解(相当于GenerationType.AUTO),那就得手动设置ID值。
buzhidao1123 2014-12-14
  • 打赏
  • 举报
回复
引用 2 楼 yuxinjian 的回复:
上面帖子中的确实 改 缺失。
大哥你说的是哪个啊包啊 拜托啦!!!
yuxinjian 2014-12-14
  • 打赏
  • 举报
回复
上面帖子中的确实 改 缺失。
yuxinjian 2014-12-14
  • 打赏
  • 举报
回复
确实 日志 的 jar 包

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧