Not sure, but I use the @NaturalId annotation for this.
I am a newbie to Seam, Hibernate ... , so I might be wrong.
unique=true is only needed if you intend to generate your schema from your entity class.
I went with approach D since my unique column is my surrogate key.
Ya, I think the constraint on that field is only put in place if you let it create the tables for you when you start up, by specifying create-drop or something similar in persistence.xml.
I don't think it will add a constraint after the table already exists. So that's something to try.