hibernate中dao的save不进数据库

alen1985 2009-07-01 03:42:54
我用dao的save方法,能显示insert语句,就是存不进去,各位大侠帮忙看下.

javabean配置文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.jadecenter.hibernateBean.Script" table="SCRIPT" schema="SYSTEM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="100" />
</property>
<property name="description" type="java.lang.String">
<column name="DESCRIPTION" />
</property>
<property name="times" type="java.lang.Integer">
<column name="TIMES" precision="22" scale="0" />
</property>
<property name="createtime" type="java.util.Date">
<column name="CREATETIME" length="7" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" />
</property>
<property name="dskenvironment" type="java.lang.String">
<column name="DSKENVIRONMENT" length="100" />
</property>
<property name="resolution" type="java.lang.String">
<column name="RESOLUTION" length="100" />
</property>
</class>
</hibernate-mapping>



hibernate配置文件:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="connection.username">system</property>
<property name="connection.url">
jdbc:oracle:thin:@166.111.134.26:1521:jade
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">oracle</property>
<property name="connection.password">jade</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="show_sql">true</property>


<mapping resource="com/jadecenter/hibernateBean/Script.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Service.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Datamonitor.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Seriescommand.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Command.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Project.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Seriescript.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Timescript.hbm.xml" />
<mapping resource="com/jadecenter/hibernateBean/Test.hbm.xml" />
<mapping
resource="com/jadecenter/hibernateBean/Virtualgroup.hbm.xml" />

</session-factory>

</hibernate-configuration>


dao里面的save方法:


public void save(Script transientInstance) {
log.debug("saving Script instance");
try {
getSession().save(transientInstance);
getSession().flush();
getSession().close();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}


我的测试代码:

public class test {

/**
* @param args
*/
public static void main(String[] args) {
try{
Script s = new Script();
s.setName("go");
new ScriptDAO().save(s);
List list = new ScriptDAO().findByProperty("name", "go");
System.out.println(list.size());
}catch(Exception e){
e.printStackTrace();
}
}

}



结果输出:
Hibernate: select max(ID) from SCRIPT
Hibernate: insert into SYSTEM.SCRIPT (NAME, DESCRIPTION, TIMES, CREATETIME, CONTENT, DSKENVIRONMENT, RESOLUTION, ID) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: select script0_.ID as ID0_, script0_.NAME as NAME0_, script0_.DESCRIPTION as DESCRIPT3_0_, script0_.TIMES as TIMES0_, script0_.CREATETIME as CREATETIME0_, script0_.CONTENT as CONTENT0_, script0_.DSKENVIRONMENT as DSKENVIR7_0_, script0_.RESOLUTION as RESOLUTION0_ from SYSTEM.SCRIPT script0_ where script0_.NAME=?
1

...全文
675 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
alen1985 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jyq0105 的回复:]
引用 9 楼 alen1985 的回复:
引用 3 楼 jyq0105 的回复:
要事务的

public void save(Script transientInstance) {
log.debug("saving Script instance");
Transaction tran=getSession().beginTransaction(); try {
getSession().save(transientInstance);
getSession().flush();
getSession().close();
tran.commit();
log.…
[/Quote]


就这样解决了,为什么有的不用这个就可以了,怪拉!总之,解决了,THX!散分了!
alen1985 2009-07-01
  • 打赏
  • 举报
回复
如果要导入transation,那不是要把所有代码重写一遍,我用myeclipse自动生成的时候本来就实现了的。问题是,我其他的DAO的save方法可以,这个可以打印出insert 语句出来就是插入不到数据库!
nicai00 2009-07-01
  • 打赏
  • 举报
回复


本 人 觉得 和 Transaction 没关系的 要 知道 tran的 初衷是什么!!!! LZ 这只是一个简单 的插入操作


jyq0105 2009-07-01
  • 打赏
  • 举报
回复
import org.hibernate.Transaction;
givenyan 2009-07-01
  • 打赏
  • 举报
回复
extends HibernateDaoSupport
jyq0105 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 alen1985 的回复:]
引用 3 楼 jyq0105 的回复:
要事务的

public void save(Script transientInstance) {
log.debug("saving Script instance");
Transaction tran=getSession().beginTransaction(); try {
getSession().save(transientInstance);
getSession().flush();
getSession().close();
tran.commit();
log.debug("save successful");

[/Quote]
alen1985 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jyq0105 的回复:]
要事务的

public void save(Script transientInstance) {
log.debug("saving Script instance");
Transaction tran=getSession().beginTransaction();
try {
getSession().save(transientInstance);
getSession().flush();
getSession().close();
tran.commit();
log.debug("save successful");
} catch (RuntimeEx…
[/Quote]

tran怎么获得
keyboardsun 2009-07-01
  • 打赏
  • 举报
回复
SQL都执行了,那很简单的道理,事务没提交。
jastby 2009-07-01
  • 打赏
  • 举报
回复
beginTransaction 事务没有提交

同3楼
zm_hs 2009-07-01
  • 打赏
  • 举报
回复
用事务
yxc0433 2009-07-01
  • 打赏
  • 举报
回复

Script s = new Script();
s.setName("go");//这里你只set了一个字段,要保证没有set的其他字段不是null(把所有字段都给个值),不然你sava(s)的时候肯定是会报错的。
new ScriptDAO().save(s);
alen1985 2009-07-01
  • 打赏
  • 举报
回复
改成native了,报错:
Hibernate: select hibernate_sequence.nextval from dual
org.hibernate.exception.SQLGrammarException: could not get next sequence value
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at com.jadecenter.hibernateDAO.ScriptDAO.save(ScriptDAO.java:38)
at com.jadecenter.filter.test.main(test.java:18)
Caused by: java.sql.SQLException: ORA-02289: 序列不存在

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
... 11 more
jyq0105 2009-07-01
  • 打赏
  • 举报
回复
要事务的

public void save(Script transientInstance) {
log.debug("saving Script instance");
Transaction tran=getSession().beginTransaction();
try {
getSession().save(transientInstance);
getSession().flush();
getSession().close();
tran.commit();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
tran.rollback();
throw re;
}
}

ytsmtxxi 2009-07-01
  • 打赏
  • 举报
回复
<hibernate-mapping>
<class name="com.jadecenter.hibernateBean.Script" table="SCRIPT" schema="SYSTEM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
改为
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="100" />
ytsmtxxi 2009-07-01
  • 打赏
  • 举报
回复

<hibernate-mapping>
<class name="com.jadecenter.hibernateBean.Script" table="SCRIPT" schema="SYSTEM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
改为
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="100" />

67,513

社区成员

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

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