As it is right now, it seems impossible to employ the always-valid paradigm (often used in Domain-Driven Design) to define entities if we use CF-ORM for persistence. The always-valid paradigm states that an entity should never be allowed to exist in an invalid state. For instance, if in a domain a Person must always have a name independently of the context, then it makes sense to define a constructor that enforces that invariant (by making name a required argument).
The problem when using CF-ORM is that during the rehydration process (reconstructing an entity from the database), the business constructor will be called (usually the init method) with no arguments which will obviously generate an exception.
In Java, since there's method overloading, there would be a private no argument constructor as well as a business constructor. Hibernate would call the no argument constructor while the business constructor would be used in the rest of the code.
Unfortunately, that's not an option in ColdFusion and we need a way of fixing that. The current implementation choice is definitely a bug: there is no reason for the ORM to call the init function at all.
I have found some awful workarounds, such as using createObject('SomeEntity').construct(...) as the business constructor but it's so much noise compared to new SomeEntity(...).