Насколько я знаю, использование сводной таблицы (как вы бы представляли отношение многих ко многим) было бы правильным способом сделать это.
Примерно так должно работать:
@Entity
public class Invoice
{
@JoinTable(name = "invoice_vendor", joinColumns = {
@JoinColumn(name = "invoice", referencedColumnName = "vendor_id")}, inverseJoinColumns = {
@JoinColumn(name = "vendor", referencedColumnName = "id")})
@OneToOne
private Vendor vendor;
}
Где таблица invoice_vendor имеет целочисленный идентификатор в столбце id и ссылку varchar в столбце vendor_id.
Также я предполагаю, что вы хотели бы установить отношения ManyToOne между поставщиками, но вы написали одинк одному, так что я оставил это как таковой.