[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Close to get it. Just a little help
|
If you want to build a descriptor in this way you need to add it to your
Session, using addDescriptor().
Oggie wrote:
>
> Hi,
>
> This is my code,
>
> public class EmployeeProject extends
> org.eclipse.persistence.sessions.Project {
>
> //private static SessionManager sm;
> //private static Session session;
> //private DatabaseLogin login;
>
> public EmployeeProject() {
> setName("EmployeeProject");
> applyLogin();
>
> //addDescriptor(buildAddressDescriptor());
> //addDescriptor(buildEmployeeDescriptor());
> //addDescriptor(buildPhoneNumberDescriptor());
> }
>
> // Data source information
> public void applyLogin() {
> DatabaseLogin login = new DatabaseLogin();
>
> // use platform appropriate for underlying database
> login.usePlatform(
> new
> org.eclipse.persistence.platform.database.oracle.Oracle10Platform());
> login.setDriverClassName("oracle.jdbc.driver.OracleDriver");
> login.setConnectionString("jdbc:oracle:thin:@127.0.0.1:1521:XE");
> login.setUserName("employee");
> login.setPassword("employee");
>
> // Configuration Properties
>
> setDatasourceLogin(login);
> //Session s = this.createDatabaseSession();
> //s.setLogLevel(SessionLog.FINE);
> //((DatabaseSession)s).login();
>
> //this.login = login;
> }
>
> public Session getSession() {
> Session session = this.createDatabaseSession();
> session.setLogLevel(SessionLog.FINE);
> ((DatabaseSession)session).login();
> // store the session in the SessionManager instance
> SessionManager manager = SessionManager.getManager();
> manager.addSession("mysession", session);
> // retrieve the session
> session = SessionManager.getManager().getSession("mysession");
> return session;
> }
>
> /**
> * Descriptors are built by defining table info, setting properties
> * (caching, etc.) and by adding mappings to the descriptor
> */
>
> // SECTION: DESCRIPTOR
> public static ClassDescriptor buildEmployeeDescriptor() {
>
> RelationalDescriptor descriptor = new RelationalDescriptor();
>
> // specify the class to be made persistent
> descriptor.setJavaClass(model.Employee.class);
>
> // specify the tables to be used and primary key
>
> descriptor.addTableName("EMPLOYEE");
> descriptor.addPrimaryKeyFieldName("EMPLOYEE.EMP_ID");
>
> // Descriptor Properties
> descriptor.useSoftCacheWeakIdentityMap();
> descriptor.setIdentityMapSize(100);
> descriptor.useRemoteSoftCacheWeakIdentityMap();
> descriptor.setRemoteIdentityMapSize(100);
> //descriptor.setSequenceNumberFieldName("EMPLOYEE.EMP_ID");
> //descriptor.setSequenceNumberName("ADD_SEQ");
> descriptor.setAlias("Employee");
>
> // Mappings
> //DirectToFieldMapping cityMapping = new DirectToFieldMapping();
> //cityMapping.setAttributeName("city");
> //cityMapping.setFieldName("ADDRESS.CITY");
> //descriptor.addMapping(cityMapping);
>
> // Additional mappings are added to the descriptor using the
> addMapping method
>
> return descriptor;
> }
>
> public void getEmployees() {
> StoredProcedureCall spcall = new StoredProcedureCall();
> spcall.setProcedureName("EMPLOYEEPKG.GETALLEMPLOYEES");
> spcall.useNamedCursorOutputAsResultSet("MYCSR");
>
> List<DatabaseRecord> employees = (Vector)
> getSession().executeSelectingCall(spcall);
>
> for(DatabaseRecord dr: employees) {
> System.out.println("EMP_ID => " + dr.get("EMP_ID"));
> System.out.println("F_NAME => " + dr.get("F_NAME"));
> System.out.println("L_NAME => " + dr.get("L_NAME"));
> System.out.println(); System.out.println();
> }
> }
>
> public void getEmployee(BigDecimal employeeId) {
> StoredProcedureCall spcall = new StoredProcedureCall();
> spcall.setProcedureName("EMPLOYEEDETAILPKG.GETEMPLOYEEDETAIL");
> spcall.addNamedArgumentValue("EMPLOYEEID", employeeId);
> spcall.useNamedCursorOutputAsResultSet("MYCSR");
>
> ReadAllQuery query = new ReadAllQuery();
> query.setCall(spcall);
> //query.addArgument("EMPLOYEEID");
>
> ClassDescriptor descriptor = buildEmployeeDescriptor();
> //descriptor.getQueryManager().addQuery(query.getName(), query);
> query.setDescriptor(descriptor);
>
> /*
> Object returnValue = null;
> if (descriptor.isDescriptorForInterface() ||
> descriptor.hasTablePerClassPolicy()) {
> returnValue =
> descriptor.getInterfacePolicy().selectAllObjectsUsingMultipleTableSubclassRead(query);
>
> if (descriptor.hasTablePerClassPolicy() && returnValue == null)
> {
> // let it fall through to query the root.
> } else {
> query.setExecutionTime(System.currentTimeMillis());
> }
> }
> */
>
> //Vector args = new Vector();
> //args.add(employeeId);
>
> model.Employee employee = (model.Employee)
> getSession().executeQuery(query);
>
> }
>
>
> public static void main(String[] args) {
> // TODO code application logic here
> EmployeeProject ep = new EmployeeProject();
> BigDecimal employeeid = new BigDecimal(32);
> try {
> ep.getEmployee(employeeid);
> } catch (java.lang.Exception ex) {
> ex.printStackTrace();
> }
> }
> }
>
> But when I run the app I get the following exception,
>
> [EL Info]: 2010-04-17
> 14:09:55.859--DatabaseSessionImpl(9519074)--Thread(Thread[main,5,main])--EclipseLink,
> version: Eclipse Persistence Services - 2.0.1.v20100213-r6600
> [EL Config]: 2010-04-17
> 14:09:55.906--DatabaseSessionImpl(9519074)--Connection(19551481)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
> platform=>Oracle10Platform
> user name=> "employee"
> datasource URL=> "jdbc:oracle:thin:@127.0.0.1:1521:XE"
> ))
> [EL Config]: 2010-04-17
> 14:09:56.343--DatabaseSessionImpl(9519074)--Connection(19058102)--Thread(Thread[main,5,main])--Connected:
> jdbc:oracle:thin:@127.0.0.1:1521:XE
> User: EMPLOYEE
> Database: Oracle Version: Oracle Database 10g Express Edition Release
> 10.2.0.1.0 - Production
> Driver: Oracle JDBC driver Version: 10.2.0.1.0XE
> [EL Info]: 2010-04-17
> 14:09:56.375--DatabaseSessionImpl(9519074)--Thread(Thread[main,5,main])--
> login successful
> [EL Fine]: 2010-04-17
> 14:09:56.89--DatabaseSessionImpl(9519074)--Connection(19058102)--Thread(Thread[main,5,main])--BEGIN
> EMPLOYEEDETAILPKG.GETEMPLOYEEDETAIL(EMPLOYEEID=>?, MYCSR=>?); END;
> bind => [32, => MYCSR]
> [EL Warning]: 2010-04-17
> 14:09:57.218--DatabaseSessionImpl(9519074)--Thread(Thread[main,5,main])--java.lang.IndexOutOfBoundsException:
> Index: 0, Size: 0
> java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> at java.util.ArrayList.RangeCheck(ArrayList.java:547)
> at java.util.ArrayList.get(ArrayList.java:322)
> at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.getPrimaryKeyClassifications(ObjectBuilder.java:2225)
> at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.extractPrimaryKeyFromRow(ObjectBuilder.java:1870)
> at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:455)
> at
> org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectsInto(ObjectBuilder.java:846)
> at
> org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:467)
> at
> org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:997)
> at
> org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:675)
> at
> org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:958)
> at
> org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:432)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2322)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1225)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1207)
> at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1167)
> at main.model.EmployeeProject.getEmployee(EmployeeProject.java:157)
> at main.model.EmployeeProject.main(EmployeeProject.java:167)
>
> I have been googling but I have not found any solution to this issue.
> I know this happen since what I have read frecuently.
>
> PLease help.
>
> Regards,
> Jose
>
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.nabble.com/EclipseLink-f26430.html EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
--
View this message in context: http://old.nabble.com/Close-to-get-it.-Just-a-little-help-tp28275823p28287884.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.