exception in plsql

Started by beulah prasanthiabout 16 years ago4 messagesbugs
Jump to latest
#1beulah prasanthi
itsbeulah@gmail.com

show details 5:21 PM (19 minutes ago)

Method in Dao
public void savePerson(Person person, List<Address> addresses, List<Email>
emails, List<Phone> numbers){
call.withProcedureName("
person_save1");

Map<String, Object> out = call.execute(new
PGPerson(person),addresses,null,null);

}

*SP in Database*

CREATE OR REPLACE FUNCTION person_save(person_to_save person, addresses
address[], emails email[], numbers phone[])
RETURNS void AS
$BODY$
DECLARE
per_id bigint;
BEGIN
IF person_to_save.id

IS NULL OR person_to_save.id

= 0 THEN
SELECT INTO per_id nextval('people_id_seq');
INSERT INTO person (id, first_name,last_name,middle_name) values
(per_id, person_to_save.first_name, person_to_save.last_name,
person_to_save.middle_name);
ELSE
per_id := person_to_save.id

;
UPDATE person SET first_name=person_to_save.first_name,
last_name=person_to_save.last_name, middle_name=person_to_save.middle_name
WHERE id = person_to_save.id

;
END IF;
IF addresses IS NOT NULL THEN
EXECUTE person_addresses_save(per_id, addresses);
END IF;
IF emails IS NOT NULL THEN
EXECUTE person_emails_save(per_id, emails);
END IF;
IF numbers IS NOT NULL THEN
EXECUTE person_phones_save(per_id, numbers);
END IF;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION person_save(person, address[], email[], phone[]) OWNER TO
postgres;
COMMENT ON FUNCTION person_save(person, address[], email[], phone[]) IS
'Saves a person. If the person is new they will insert or if they exist
they will update.
Will do the same for the other objects also addresses, emails, phone';

*exception raised is

org.postgresql.util.PSQLException: Cannot cast an instance of
java.util.ArrayList to type Types.ARRAY*

#2Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: beulah prasanthi (#1)
Re: exception in plsql

beulah prasanthi wrote:

org.postgresql.util.PSQLException: Cannot cast an instance of
java.util.ArrayList to type Types.ARRAY*

An ArrayList is not an array -- it is a List implementation which
uses an array, internally. What happens if you use the toArray
method to extract an array from the List and pass that in?

-Kevin

#3Ravi
nm.ravi2005@gmail.com
In reply to: Kevin Grittner (#2)
Fwd: exception in plsql

---------- Forwarded message ----------
From: Ravi <nm.ravi2005@gmail.com>
Date: Mon, Feb 22, 2010 at 7:31 PM
Subject: Re: [BUGS] exception in plsql
To: Kevin Grittner <Kevin.Grittner@wicourts.gov>

when I tried to use the toArray method to extract exception raised saying

org.postgresql.util.PSQLException: Cannot cast an instance of
[Ljava.lang.Object; to type Types.ARRAY

-Ravi

On Mon, Feb 22, 2010 at 6:46 PM, Kevin Grittner <Kevin.Grittner@wicourts.gov

wrote:

beulah prasanthi wrote:

org.postgresql.util.PSQLException: Cannot cast an instance of
java.util.ArrayList to type Types.ARRAY*

An ArrayList is not an array -- it is a List implementation which
uses an array, internally. What happens if you use the toArray
method to extract an array from the List and pass that in?

-Kevin

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

--
Ravi.T
BayLogic Technologies India Pvt. Ltd.
Vizag.

--
Ravi.T
BayLogic Technologies India Pvt. Ltd.
Vizag.

#4Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: Ravi (#3)
Re: Fwd: exception in plsql

Ravi <nm.ravi2005@gmail.com> wrote:

when I tried to use the toArray method to extract exception raised
saying

org.postgresql.util.PSQLException: Cannot cast an instance of
[Ljava.lang.Object; to type Types.ARRAY

OK, that looks like an array, so I'm now a bit lost.

Could you put together a self-contained example of how to create the
problem? (Self-contained meaning that I can take what you provide
and run it, without writing any Java or plpgsql code or inventing
table or type definitions -- which might or might not match what you
did well enough to show the problem.) It's most helpful if you keep
removing things until you have the *smallest* example which still
shows the problem.

-Kevin