Вам не нужно (на самом деле, вы не должны) создавать экземпляр Y вручную. Вы можете сделать вариант этого (в зависимости от вашей конфигурации)
Y y = (Y) session.load(Y.class, pk);
Это не извлекает Y из базы данных, вместо этого он загружает прокси, состоящий только из упомянутого вами pk.
Тогда присвоение y x и сохранение x будет вести себя так, как вы ожидаете.