refactory with one to many many to one annotation