- ((first-name :type string :initarg :first-name :reader first-name)
- (last-name :type string :initarg :last-name :reader last-name
- :reference find-person-by-last-name)
- (dob :type integer :initarg :dob :reader dob :print-formatter format-date)
- (resume :type cdata :initarg :resume :reader resume)
- (addresses :initarg :addresses :reader addresses :subobject t))
+ ((first-name :value-type (varchar 20) :initarg :first-name :accessor first-name
+ :value-constraint stringp :null-allowed nil)
+ (last-name :value-type (varchar 30) :initarg :last-name :accessor last-name
+ :value-constraint stringp
+ :hyperlink find-person-by-last-name :null-allowed nil)
+ (full-name :value-type string :stored nil)
+ (dob :value-type integer :initarg :dob :accessor dob :print-formatter format-date
+ :value-constraint integerp :input-filter convert-to-date)
+ (resume :value-type string :initarg :resume :accessor resume
+ :value-constraint stringp)
+;; (addresses :value-type (list-of subobject) :initarg :addresses :accessor addresses))
+ (addresses :subobject t :initarg :addresses :accessor addresses))