gut ist es immer wenn man sich auf surrogat schlüssel
http://de.wikipedia.org/wiki/Surrogatschl%C3%BCssel festlegt.
gut ist es auch wenn man die künstlichen schlüssel immer im selben format hat, also int, long oder string. mischen würde ich sagen ist hier nie gut.
du mappst von b auf a. also muss a eine spalte (column) enthalten die b referenziert (oder zu machst eine mapping tabelle). Hier ist IMHO der selbe datentyp pflicht in der db.
in deinem fall so weit ich das verstanden habe:
KEY & Column sind dazu da um hibernate zu sagen welche spalte in der tabelle A den schlüssel enthält aus tabelle B. Wobei hier B.key gemeint ist.
.. weiters hört sich deine beschreibung nach einer legacy datenbank an.
hier würde ich dann meinen das eine query notwendig ist und ein mapping hier so nicht möglich ist, wenn die typen nicht passen.
hilft dir das was ?