Ma quale motivo ha la tua tabella per non avere una chiava primaria ?
Anche se nella tabella non c'è una colonna univoca ne devi mettere una generata dal db (una sequence in oracle), altrimenti puoi inserire due righe uguali e non puoi più distinguerle.
Casi in cui non c'è bisogno di mettere una chiave primaria sono proprio pochi e non è certo il tuo.

Il "workaround" per hibernate è mettere tutte le colonne come chiave usando nei mapping "key-property" invece che "property", ma è ok solo se per qualche motivo non puoi modificare lo schema del tuo db.

Nel tuo pojo la pk non si deve chiamare per forza id, basta che la mappi con il tag id, esempio <id name="unaPrimaryKey" column="TAX_ANAG"/>

Il cast non ti era permesso perchè usavi session.createSQLQuery(...) , questo bypassa i mapping, esegue la query così comè e ti ritorna un array di object o una mappa non mi ricordo onestamente, cmq non ti ritorna istanze del tuo pojo, hibernate non lo sa cosa vuoi perchè ha saltato i mapping, è simile ad usare JDBC e ricostruirsi poi i pojo a manina.
Usa session.createQuery con una query HQL invece, o le criteria API che sono comode se non hai una query fissa (esempio hai una schermata di ricerca)

Ultima cosa ti sconsiglio di imparare hibernate seguendo spezzoni di guide quà e là, ti conviene rimediarti un libro e seguirlo.