Използването на тирета в имената на колоните изглежда е известен проблем с Hibernate.
В JPA 1.0 заобиколното решение е да се екранира името на колоната с обратни отметки:
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
В JPA 2.0 и по-нови можете просто да поставите кавички около името на колоната, напр.
@Column(name = "\"USER-NO\"")
Справка:
Създаване на поле със запазено име на дума с JPA