Oracle will not compile your definition because the Item type has not yet been compiled. Why don't you try:
Compile this:
CREATE OR REPLACE TYPE Item; CREATE OR REPLACE TYPE items_table IS TABLE OF REF item;
and then try:
CREATE OR REPLACE TYPE item AS OBJECT ( id number, subitems items_table )
source share