Sorry to take so long to reply to this Thomas.. saw the comment but put it on hold because my company was moving to a new building and that ate up my time (include parts of Xmas break..sigh). I'm just now finding the time to digest this.
Some additional background is that this came up in testing 3.3-RC1 against different combinations of compile options. This issue is really just a "placeholder" that there needs to be a clearer understanding of bean behaviour and matching changes to the templates/test project to ensure they works the way they are designed.
That said, in re-reading the Beans entry in the reference, I would think the correct behaviour would be as follows:
If complexObjectModel = false, then a bean should just have the field setters/getters and no FK methods. This is the same as the Torque record.
If complexObjectModel = true, then a bean should have the same FK methods as the Torque record.
This should work regardless of the objectIsCaching setting. The current templates don't do this.
As you point out, the hard part is deciding what the correct bean behaviour should be for the objectIsCaching=true or false.
If objectIsCaching=true, then the bean should get the current cache values.
If objectIsCaching=false, then as you said, the methods should return null. I know that this makes the methods worthless, but it makes beans and record objects symetrical.