By using atZoneSameInstant
you could achieve what you are after, if I understood you correctly:
OffsetDateTime time = OffsetDateTime.parse("2021-11-02T22:16:16.108341-04:00");
ZonedDateTime timeInUTC = time.atZoneSameInstant(ZoneId.of("UTC"));
System.out.println(timeInUTC); ///2021-11-03T02:16:16.108341Z[UTC]
atZoneSameInstant
public ZonedDateTime atZoneSameInstant(ZoneId zone)
Combines this date-time with a time-zone to create a ZonedDateTime ensuring that the result has the same instant.
This returns a ZonedDateTime formed from this date-time and the specified time-zone. This conversion will ignore the visible local date-time and use the underlying instant instead. This avoids any problems with local time-line gaps or overlaps. The result might have different values for fields such as hour, minute an even day.
To attempt to retain the values of the fields, use atZoneSimilarLocal(ZoneId). To use the offset as the zone ID, use toZonedDateTime().
Parameters:
zone - the time-zone to use, not null
Returns:
the zoned date-time formed from this date-time, not null

== Edited ==
If you wanted your database to Store the Information in (Your ZONE), but in the UI (UTC), then you need a custom method.
@Entity
public class YourEntity{
private OffsetDateTime createdOn;
public ZonedDateTime getTimeInUTC{
return //convert createdOn;
}
However, why not just save the trouble and configure hibernate to store in UTC directly, if you are worried about "cost" due to conversions?:
How to store date/time and timestamps in UTC time zone with JPA and Hibernate