| 
 This is what I am meaning, 
  
  
As a workaround you can call this on startup after 
login (postLogin SessionEvent): how to doit? 
  
Thanks, 
Jose 
  
Sent: Saturday, April 17, 2010 2:29 PM 
Subject: [eclipselink-users] Close to get it. Just a little 
help   
  
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 
  
  
_______________________________________________ eclipselink-users 
mailing 
list eclipselink-users@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/eclipselink-users 
 |