L'uso dei trattini nei nomi delle colonne sembra essere un problema noto con Hibernate.
In JPA 1.0 la soluzione alternativa consiste nell'escape del nome della colonna con i backtick:
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
In JPA 2.0 e versioni successive, puoi semplicemente inserire virgolette attorno al nome della colonna, ad es.
@Column(name = "\"USER-NO\"")
Riferimento:
Creazione di un campo con nome di parola riservato con l'APP