Hello Adrian,
Thank you very much for your answer.
You are right about the problem with my hashCode method. I put that code there because when deploying the EJB, that method got invoked twice with its attributes set to null, so it launched a NullPointerException.
I just wanted to prevent that situation, but I forgot the value returned by hashCode has to be the same for all the life of the class' instance.
I have changed it so it returns always the same value when all the attributes are null:
------------- BEGINNING OF HASHCODE METHOD ------------
public int hashCode() {
int code;
if (this.idPaciente == null && this.codCip == null && this.secPaciente == null) {
System.out.println("ATTENTION: INVOKING hashCode with NULL attributes ...");
code = this.getClass().hashCode();
}
else {
code = 0;
if (this.idPaciente != null)
code += this.idPaciente.hashCode();
if (this.codCip != null)
code += this.codCip.hashCode();
if (this.secPaciente != null)
code += this.secPaciente.hashCode();
}
return code;
}
------------- END OF HASHCODE METHOD ------------
However, fixing this bug has not solved my problem with JBoss.
I'm working with Oracle 8i 8.1.7 database, and using JDBC 2 drivers (classes12.zip). Here are the tables and the data you need to reproduce the error:
------------ BEGINNING OF SQL CODE ----------------
drop table TA_TARJETAS;
create table TA_TARJETAS (
COD_CIP varchar(16) not null,
NUM_NASS varchar(12),
COD_SEXO varchar(1),
DES_NOMBRE varchar(22),
DES_APELLIDO1 varchar(22),
FEC_NACIMIENTO DATE,
COD_DNI_NIE varchar(9),
DES_APELLIDO2 varchar(22),
DES_DIRECCION varchar(60),
COD_POSTAL number(5,0),
NUM_TELEF_PPAL number(11,0));
alter table TA_TARJETAS add primary key (COD_CIP);
insert into TA_TARJETAS values ('tacode1', 'tanass1', 'V', 'taname1', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname1', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode2', 'tanass2', 'M', 'taname2', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname2', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode3', 'tanass3', 'V', 'taname3', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname3', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode4', 'tanass4', 'M', 'taname4', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname4', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode5', 'tanass5', 'V', 'taname5', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname5', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode6', 'tanass6', 'M', 'taname6', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname6', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode7', 'tanass7', 'V', 'taname7', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname7', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode8', 'tanass8', 'M', 'taname8', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname8', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode9', 'tanass9', 'V', 'taname9', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname9', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode10', 'tanass10', 'M', 'taname10', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname10', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode11', 'tanass11', 'V', 'taname11', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname11', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode12', 'tanass12', 'M', 'taname12', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname12', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode13', 'tanass13', 'V', 'taname13', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname13', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode14', 'tanass14', 'M', 'taname14', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname14', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode15', 'tanass15', 'V', 'taname15', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname15', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode16', 'tanass16', 'V', 'taname16', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname16', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode17', 'tanass17', 'M', 'taname17', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname17', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode18', 'tanass18', 'V', 'taname18', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname18', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode19', 'tanass19', 'M', 'taname19', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname19', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode20', 'tanass20', 'V', 'taname20', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname20', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode21', 'tanass21', 'M', 'taname21', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname21', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode22', 'tanass22', 'V', 'taname22', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname22', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode23', 'tanass23', 'M', 'taname23', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname23', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode24', 'tanass24', 'V', 'taname24', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname24', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode25', 'tanass25', 'M', 'taname25', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname25', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode26', 'tanass26', 'V', 'taname26', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname26', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode27', 'tanass27', 'M', 'taname27', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname27', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode28', 'tanass28', 'V', 'taname28', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname28', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode29', 'tanass29', 'M', 'taname29', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname29', 'test street', 123, 123456);
insert into TA_TARJETAS values ('tacode30', 'tanass30', 'V', 'taname30', 'DIAZ', TO_DATE('12-11-2002', 'DD-MM-YYYY'), '111111', 'ta2ndsurname30', 'test street', 123, 123456);
drop table CC_PACIENTES;
create table CC_PACIENTES (
SEC_PACIENTE number(10,0) not null,
APELLIDO1 varchar(22),
APELLIDO2 varchar(22),
NOMBRE varchar(22),
FEC_NACIMIENTO DATE,
SEXO varchar(1),
NUM_SS varchar(12),
DIRECCION varchar(60),
COD_POSTAL varchar(5),
DNI varchar(9),
NUM_TELF1 varchar(15),
TAR_COD_CIP varchar(16));
alter table CC_PACIENTES add primary key (SEC_PACIENTE);
insert into CC_PACIENTES VALUES (1, 'DIAZ', 'cc2ndsurname1', 'ccname1', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss1', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (2, 'DIAZ', 'cc2ndsurname2', 'ccname2', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss2', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (3, 'DIAZ', 'cc2ndsurname3', 'ccname3', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss3', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (4, 'DIAZ', 'cc2ndsurname4', 'ccname4', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss4', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (5, 'DIAZ', 'cc2ndsurname5', 'ccname5', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss5', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (6, 'DIAZ', 'cc2ndsurname6', 'ccname6', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss6', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (7, 'DIAZ', 'cc2ndsurname7', 'ccname7', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss7', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (8, 'DIAZ', 'cc2ndsurname8', 'ccname8', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss8', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (9, 'DIAZ', 'cc2ndsurname9', 'ccname9', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss9', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (10, 'DIAZ', 'cc2ndsurname10', 'ccname10', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss10', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (11, 'DIAZ', 'cc2ndsurname11', 'ccname11', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss11', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (12, 'DIAZ', 'cc2ndsurname12', 'ccname12', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss12', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (13, 'DIAZ', 'cc2ndsurname13', 'ccname13', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss13', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (14, 'DIAZ', 'cc2ndsurname14', 'ccname14', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss14', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (15, 'DIAZ', 'cc2ndsurname15', 'ccname15', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss15', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (16, 'DIAZ', 'cc2ndsurname16', 'ccname16', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss16', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (17, 'DIAZ', 'cc2ndsurname17', 'ccname17', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss17', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (18, 'DIAZ', 'cc2ndsurname18', 'ccname18', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss18', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (19, 'DIAZ', 'cc2ndsurname19', 'ccname19', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss19', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (20, 'DIAZ', 'cc2ndsurname20', 'ccname20', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss20', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (21, 'DIAZ', 'cc2ndsurname21', 'ccname21', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss21', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (22, 'DIAZ', 'cc2ndsurname22', 'ccname22', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss22', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (23, 'DIAZ', 'cc2ndsurname23', 'ccname23', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss23', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (24, 'DIAZ', 'cc2ndsurname24', 'ccname24', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss24', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (25, 'DIAZ', 'cc2ndsurname25', 'ccname25', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss25', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (26, 'DIAZ', 'cc2ndsurname26', 'ccname26', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss26', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (27, 'DIAZ', 'cc2ndsurname27', 'ccname27', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss27', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (28, 'DIAZ', 'cc2ndsurname28', 'ccname28', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss28', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (29, 'DIAZ', 'cc2ndsurname29', 'ccname29', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss29', 'test street', '123', '111111', '123456', null);
insert into CC_PACIENTES VALUES (30, 'DIAZ', 'cc2ndsurname30', 'ccname30', TO_DATE('12-11-2002', 'DD-MM-YYYY'), 'V', 'ccnumss30', 'test street', '123', '111111', '123456', null);
drop table RACPPACIENTES;
create table RACPPACIENTES (
IDPACIENTE number(11,0) not null,
NTARJETASANITARIA varchar(16),
SEC_PACIENTE number(10,0));
alter table RACPPACIENTES add primary key (IDPACIENTE);
drop table TA_APELLIDOS_COMUNES;
create table TA_APELLIDOS_COMUNES (
CODIGO NUMBER(22,0) not null,
DES_APELLIDO1 VARCHAR(22),
DES_APELLIDO2 VARCHAR(22),
CUENTA NUMBER(22,0));
alter table TA_APELLIDOS_COMUNES add primary key (CODIGO);
------------ END OF SQL CODE ----------------
There is no need for data for the last two tables, but they do have to exist. And here is how I configured the Oracle data source under JBoss:
---------- BEGINNING OF renal-db.service.xml ------------
<?xml version="1.0" encoding="UTF-8"?>
<depends optional-attribute-name="ManagedConnectionFactoryName">
<!--embedded mbean-->
RenalDB
<config-property name="ConnectionURL" type="java.lang.String">jdbc:oracle:thin:@10.81.202.10:1521:renal</config-property>
<config-property name="DriverClass" type="java.lang.String">oracle.jdbc.driver.OracleDriver</config-property>
<config-property name="UserName" type="java.lang.String">renal</config-property>
<config-property name="Password" type="java.lang.String">renal</config-property>
<depends optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper
<depends optional-attribute-name="ManagedConnectionPool">
<!--embedded mbean-->
0
50
5000
15
ByContainer
<depends optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager
<depends optional-attribute-name="JaasSecurityManagerService">jboss.security:service=JaasSecurityManager
java:/TransactionManager
jboss.jca:service=RARDeployer
---------- END OF renal-db.service.xml ------------
Well, I hope you can reproduce the problem I'm having with JBoss.
Thank you very much for your help.
Regards,
Victor