Just so that everyone is clear, the Hibernate mantra has been that both surrogate keys and natural keys are supported, but surrogate keys are preferred. From the book "Hibernate in Action",
Quote:
Chapter 3, Section 3.4.3 "Choosing primary keys"
Experience has shown that natural keys almost always cause problems in the long run. ... we strongly recommend that new application use synthetic identifiers (also called surrogate keys).
So we have opposing preferences. Big deal? Shouldn't be. But the difference is there. In extreme cases it becomes a bit like putting a round peg in a square hole, but for most cases (n)Hibernate should be able to work with most schemas.