handling transient entity in delete processing什么意思

菜鸟向各位高手求教,在使用delete时候,提示handling transient entity in delete processing.
方法如下:

public void delete(Member persistentInstance) {
log.debug("deleting Member instance");
try {
getSession().beginTransaction();
getSession().delete(persistentInstance);
log.debug("delete successful");
getSession().beginTransaction().commit();

    } catch (RuntimeException re) {
        log.error("delete failed", re);
        throw re;
    }
    finally
    {
        if(getSession().beginTransaction()!=null)
            getSession().beginTransaction().rollback();
        getSession().beginTransaction().commit();
        Close();
    }
}

数据库是postgres。表结构CREATE TABLE member
(
id integer NOT NULL,
name character varying,
pw character varying,
sex character varying,
identity serial NOT NULL,
CONSTRAINT pk PRIMARY KEY (identity)
)

请指教,谢谢了!!!
[b]问题补充:[/b]
其实也不是什么错误,就一直在delete processing中,就不删除数据。

信息如下:
INFO - Hibernate 3.2.5
INFO - hibernate.properties not found
INFO - Bytecode provider name : cglib
INFO - using JDK 1.4 java.sql.Timestamp handling
INFO - configuring from resource: /hibernate.cfg.xml
INFO - Configuration resource: /hibernate.cfg.xml
INFO - Reading mappings from resource : com/ison/hibernate/beans/Member.hbm.xml
INFO - Mapping class: com.ison.hibernate.beans.Member -> member
INFO - Reading mappings from resource : com/ison/hibernate/beans/Parnter.hbm.xml
INFO - Mapping class: com.ison.hibernate.beans.Parnter -> parnter
INFO - Configured SessionFactory: null
INFO - Using Hibernate built-in connection pool (not for production use!)
INFO - Hibernate connection pool size: 20
INFO - autocommit mode: false
INFO - using driver: org.postgresql.Driver at URL: jdbc:postgresql://127.0.0.1:5432/Demo
INFO - connection properties: {user=ison_sa, password=****}
INFO - RDBMS: PostgreSQL, version: 8.2.3
INFO - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.2 JDBC3 with SSL (build 506)
INFO - Using dialect: org.hibernate.dialect.PostgreSQLDialect
INFO - Using default transaction strategy (direct JDBC transactions)
INFO - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO - Automatic flush during beforeCompletion(): disabled
INFO - Automatic session close at end of transaction: disabled
INFO - JDBC batch size: 15
INFO - JDBC batch updates for versioned data: disabled
INFO - Scrollable result sets: enabled
INFO - JDBC3 getGeneratedKeys(): disabled
INFO - Connection release mode: auto
INFO - Default batch fetch size: 1
INFO - Generate SQL with comments: enabled
INFO - Order SQL updates by primary key: disabled
INFO - Order SQL inserts for batching: disabled
INFO - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO - Using ASTQueryTranslatorFactory
INFO - Query language substitutions: {}
INFO - JPA-QL strict compliance: disabled
INFO - Second-level cache: enabled
INFO - Query cache: disabled
INFO - Cache provider: org.hibernate.cache.NoCacheProvider
INFO - Optimize cache for minimal puts: disabled
INFO - Structured second-level cache entries: disabled
INFO - Echoing all SQL to stdout
INFO - Statistics: disabled
INFO - Deleted entity synthetic identifier rollback: disabled
INFO - Default entity-mode: pojo
INFO - Named query checking : enabled
INFO - building session factory
INFO - Not binding factory to JNDI, no JNDI name configured
INFO - handling transient entity in delete processing

[b]问题补充:[/b]
现在上面提示不变,多了

Exception in thread "main" org.hibernate.SessionException: Session was already closed

[b]问题补充:[/b]
对,你讲的非常正确!谢谢。
不过,那是我在试了N种方法后依然只得到handling transient entity in delete processing 这样的提示而无法从数据库中删除数据后,胡乱加的,呵呵。见笑了。
另外,我if控制的只有rollback(),现在我改了,可是依然没有删除数据啊,
我实在不解,请高手点拨啊!
[b]问题补充:[/b]
我晕了,改了之后提示跟我一开始贴出来的一样,连结果都是一样,数据没有删除
[b]问题补充:[/b]
有id,但跟数据库的ID不一致。原来这样
[b]问题补充:[/b]
多谢!
有问题再请教!!

提示handling transient entity in delete processing. 并不是说有错误,只是info级别的提示。你debug一下这个delete(Member persistentInstance)方法传入的persistentInstance参数有没有id值,可能传进去的时候根本就没有id值,所以没有对应的数据可删除。

把控制台错误信息全部贴上来

你这样写这个方法:
[code="java"]
public void delete(Member persistentInstance) {
Session session = null;
Transaction tx = null;
try {
session = getSession();
tx = session.beginTransaction();
session.delete(persistentInstance);
tx.commit();
session.close();

} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
finally
{
if(session!=null)
session.close();
}
}

[/code]

[code="java"]finally
{
[color=red]if(getSession().[color=red]beginTransaction()[/color]!=null)
getSession().[color=red]beginTransaction()[/color].rollback();
getSession().[color=red]beginTransaction()[/color].commit();[/color]
Close();
} [/code]
这些代码都明显有问题,看来你对beginTransaction()存在误解,这个方法会自动从当前上下文查找是否已经存在一个事务上下文,如果存在就返回它,如果不存在就会新建一个,所以通常情况下永远都不会是null,所以标红的地方可能返回的都是新的事物对象,而不是先前那个,对新建立的事物对象调用这个rollback()和commit()明显没意义

[code="java"]
finally

{

if([color=red]session.isOpen()[/color])

session.close();

}

}
[/code]
在试试,嘿嘿,一时疏忽

[code="java"]
finally

{

if([color=red]session.isOpen()[/color])

session.close();

}

}

[/code]

我晕,JAVAEYE的编辑器有问题,标红不了
[quote]if(session!=null)改成if(session.isOpen())[/quote]

那就是别的原因了,检查一下为什么传入的id和数据库不同