According to the documentation for ORA-04055 and the following URL's you can't have actual instances of mutually dependent objects in both object types. At least one of them must be a reference.
NOTE: I am putting the definition of PERSON first because logically STUDENT appears to be a dependent of PERSON. However, if that is not the case, the declaration order can be swapped..
Also, the object that contains an actual instance of the other object must be completely defined first.
This will compile, and if both objects have REF types to the others, it will compile, but the other way around will not.
CREATE OR REPLACE TYPE STUDENTC;
CREATE OR REPLACE TYPE PERSONC AS OBJECT (
student1 REF STUDENTC
) NOT FINAL;
/
CREATE OR REPLACE TYPE STUDENTC AS OBJECT (
person1 PERSONC,
application_checklist INTEGER
) NOT FINAL;
/
References:
http://psoug.org/definition/REF.htm
http://docs.oracle.com/cd/A87860_01/doc/appdev.817/a76976/adobjmng.htm
http://docs.oracle.com/cd/E11882_01/appdev.112/e11822/adobjmng.htm#i1003083
See ORACLE Documentation for ORA-04055