This is what I am meaning,
http://www.eclipse.org/forums/index.php?t=msg&goto=518159
<http://www.eclipse.org/forums/index.php?t=msg&goto=518159>
As a workaround you can call this on startup after login (postLogin
SessionEvent): how to doit?
Thanks,
Jose
*From:* Jose Alvarez de Lara <mailto:dakhla.0563@xxxxxxxxxxx>
*Sent:* Saturday, April 17, 2010 2:29 PM
*To:* EclipseLink-Users <mailto:eclipselink-users@xxxxxxxxxxx>
*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
------------------------------------------------------------------------
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users