I'll start this off by saying that I know how this behaves already and what I'm looking for is a workaround to this behaviour.
If I create an object and I set the metadata parameter to null, the object will be created with any of the parent object's categories inherited. Now if I actually create my own metadata object and apply it to the object I'm creating, it will populate just that category. None of the other categories on the parent will be inherited.
What I'm wondering is if there is a fast way of doing this but instead of just clobbering the values, it inherits the parents values and sets only those category attributes included in the passed in metadata?
If not, my approach will be to fetch the Metadata object from the parent node which might not be so bad so long as I have the value cached.
As I see it, the behaviour I described is a double-edged sword. It means that if you are creating an object and want to set certain attributes on it, you can do that. If you don't have any information about what to set for required attributes on the parent, you will be able to create your object, inheritance be damned. The downside is that if your parent object has category attributes you want set on the object (say for search or faceted browsing), these will be missed if you don't know about these categories explicitly.
-Hugh