使用Hibernate注解自动创建表报错

yinhao2012 2012-01-15 08:44:14
实体类

package com.entity;

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


/*
* 使用注解创建并关联数据库中的表,需要在hibernate配置文件中设置映射
*/

@Entity
public class Weapon {
private long id;
private String name;

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
//@SequenceGenerator(name="weapon_seq")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


Hibernate配置文件中添加

<mapping class="com.entity.Weapon"/>

测试类

package com.test;

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

import com.entity.Weapon;

/*
* 通过在hibernate文件中注册实体bean,并在实体bean中添加
* hibernate注解,可以自动创建数据库中的关联表并将属性与字段关联
*/
public class TestAnnotations {
private static AnnotationConfiguration ac = new AnnotationConfiguration().configure();

private static SessionFactory sf = null;

public static void main(String[] args) {
sf = ac.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
Weapon weapon = new Weapon();
weapon.setName("jack");
weapon.setId(1);
session.save(weapon);
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
Hibernate: insert into Weapon (name, 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 com.test.TestAnnotations.main(TestAnnotations.java:27)
Caused by: java.sql.BatchUpdateException: ORA-00942: table or view does not exist

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:8739)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 8 more



查询数据库Weapon表没被创建,有遇到这样问题的朋友帮忙分析一下啊,谢谢。
...全文
622 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
药酒 2013-12-20
  • 打赏
  • 举报
回复
今天我也遇到了这个问题,正好解决了。 我的问题是配置文件里面已经有<property name="hibernate.hbm2ddl.auto">update</property> 然后我把它改为:<property name="hibernate.hbm2ddl.auto">create</property> 就可以创建表了。 不过这是hibernate3的注解,hibernate4好像不支持注解创建表了。。。也不知道升级了之后如何创建表,看来还得自学新技术啊
药酒 2013-12-20
  • 打赏
  • 举报
回复
今天我也遇到了这个问题,正好解决了。 我的问题是配置文件里面已经有<property name="hibernate.hbm2ddl.auto">update</property> 然后我把它改为:<property name="hibernate.hbm2ddl.auto">create</property> 就可以创建表了。 不过这是hibernate3的注解,hibernate4好像不支持注解创建表了。。。也不知道升级了之后如何创建表,看来还得自学新技术啊
瞳孔里的阳光 2013-11-15
  • 打赏
  • 举报
回复
我加上了那句话怎么还不成 改报invalid configuration这个错误 求解
327211663 2013-11-10
  • 打赏
  • 举报
回复
是呀 坑死我了
马林515 2013-06-15
  • 打赏
  • 举报
回复
对啊 网上免费视频严重怀疑有些被剪切过 老是容易出现断层的情况
ofthebest 2012-11-16
  • 打赏
  • 举报
回复
谢谢了,我也出了这个问题。加上去就解决了。那些不自己不懂却还在教人的真是误人子弟啊。
nnmmiioo 2012-07-19
  • 打赏
  • 举报
回复
北大青鸟的吧,我也是,一样的问题,,现在也好了,,,视频上也不知道怎么弄的,,靠,
我都怀疑这视频是不是拼接的。你说我们本来就不懂,,他还来这出,,,
yinhao2012 2012-01-16
  • 打赏
  • 举报
回复
恩,很给力!这个,真没加。而且加上了可以自动创建表了。不过为什么教学视频上根本没提要加这句啊?这句话具体的含义能详细解释一下吗?
qdcaijunjun 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yinhao2012 的回复:]
恩,很给力!这个,真没加。而且加上了可以自动创建表了。不过为什么教学视频上根本没提要加这句啊?这句话具体的含义能详细解释一下吗?
[/Quote]

如果是第一次生成表,那个要写成create创建表,表生成好了,再改回update根据sql语句更新表
香蕉猪 2012-01-15
  • 打赏
  • 举报
回复
有没有在配置文件里设置对象建模工具???
<property name="hibernate.hbm2ddl.auto">update</property>
有没有???

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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