L'utilisation de tirets dans les noms de colonnes semble être un problème connu avec Hibernate.
Dans JPA 1.0, la solution consiste à échapper le nom de la colonne avec des backticks :
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
Dans JPA 2.0 et versions ultérieures, vous pouvez simplement placer des guillemets autour du nom de la colonne, par exemple
@Column(name = "\"USER-NO\"")
Référence :
Création d'un champ avec un nom de mot réservé avec JPA