I have use Required annotation on few ManyToOne relationship, this work perfectly.
One diference with your code is the JoinColumn annotation that i don't use.
I'm aware about the form form validate() method. Is there a simpler way? preferrably a way that will force the error on the specific field in the view without passing the message to the view as a parameter.
Only solution i know is to create your own annotation.