Когда вы работаете в расширенном контексте персистентности, ваш возвращенный объект User остается в управляемом состоянии, а когда вы используете транзакцию, контекст контекста постоянства завершает транзакцию, как только возвращается метод lookupUserById (), и результатом этого метода является объект, уже отсоединенный от контекста персистентности,В результате все свойства этой сущности, помеченные как LAZY, больше не доступны.
Если вы хотите получить доступ к этим ленивым свойствам после отсоединения сущности от контекста постоянства, вызовите специальные методы получения для этой сущности, прежде чем вернуться из метода lookupUserById.
т.е.
public User lookupUserById(@PathParam("id") long id) {
User user = em.find(User.class, id);
user.getAddress().getCountry();
return user;
}