Hi Yu Wang,
You need to tell OpenJPA that you're not using the Connection any more
by calling close(). See this Example 4.4 in the user's manual:
import java.sql.*;
import org.apache.openjpa.persistence.*;
... OpenJPAEntityManager kem = OpenJPAPersistence.cast(em);
Connection conn = (Connection) kem.getConnection();
// do JDBC stuff
conn.close();
Regards,
Craig
On Jan 21, 2010, at 1:26 AM, wang yu wrote:
Gurus:
I use OpenJPA 1.2.1 and dbcp:
<property name="openjpa.ConnectionDriverName"
value="org.apache.commons.dbcp.BasicDataSource"
/>
<property name="openjpa.ConnectionProperties"
value="driverClassName=oracle.jdbc.driver.OracleDriver,
url=jdbc:oracle:thin:@localhost:1521:orcl, username=XXXX,
password=XXX, maxActive=8, maxWait=10000, poolPreparedStatements=true"
/>
And I found the connection pool worked perfect for JPA query. But if I
use JDBC query like following:
OpenJPAEntityManager open_manager = OpenJPAPersistence
.cast(entitiManager);
Connection conn = (Connection) open_manager.getConnection();
java.sql.PreparedStatement PrepStmt = null;
java.sql.ResultSet sqlResults = null;
try {
PrepStmt = connection
.prepareStatement("select * from
tsam.MON_BRIDGE");
sqlResults = PrepStmt.executeQuery();
} catch (SQLException e) {
log.error(e.getMessage());
} finally {
try {
if (sqlResults != null)
sqlResults.close();
if (PrepStmt != null)
PrepStmt.close();
} catch (SQLException e) {
}
}
The connection cannot be put into pool and the result is out of db
connection.
How should I do? Should I use createNativeQuery(String sql, Class
resultClass) to query with native sql?
Regards,
Yu Wang
Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!