well... it's very easy ! Just use the synonym in place of the table name in your mapping files.
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.mainsys.account.statement.model">
<class name="Notice" table="STT_NOTICE" abstract="true">
<id name="id" type="long">
<column name="NOTICE_ID" precision="12" scale="0" not-null="true" />
<generator class="sequence">
<param name="sequence">SEQ_NOTICE</param>
</generator>
</id>
<version column="NOTICE_VERSION" name="version" type="long" />
<property name="number" type="long">
<column name="NOTICE_NUMBER" length="12" not-null="true" />
</property>
<property name="type" type="NoticeTypeType" column="NOTICE_TYPE" not-null="true"/>
<property name="date" type="StringDateType">
<column name="NOTICE_DATE" not-null="true" />
</property>
<bag name="lines" table="STT_NOTICE_LINE" order-by="NOTICE_LINE_POSITION" lazy="false">
<key column="NOTICE_ID"/>
<element type="string" column="NOTICE_LINE_TEXT" length="78" not-null="true"/>
</bag>
<many-to-one name="statement" class="Statement"
fetch="select">
<column name="STATEMENT_ID" precision="12" scale="0" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
Here the attributes "table" of <class> ("STT_NOTICE") and <bag> ("STT_NOTICE_LINE") are respectively oracle synonyms for two tables ("MSD70" & "MSD71") of my database.