You'd map all 50 columns normally. So a regular query would be something like:
Code:
from Foo foo where foo.id = :fooId
If you want just a subset of the columns (especially a small one), you can use this method (discussed in chapter 14 of the manual):
Code:
select new Foo(foo.name, foo.description) from Foo foo where foo.id = :fooId
You'd need to provide a constructor for Foo with those two parameters in that order. Now, this assumes that calling programs know that they are getting half-baked Foo instances. I'm not totally cool with this so I tend to create another class for this purpose, but you can do what fits in your application. Note that nothing else will be populated on these Foo intances and associations won't lazy load, etc. They're ONLY what you select. Document what you're doing if you expose these guys to calling programs.