Menggunakan tanda hubung dalam nama kolom tampaknya merupakan masalah yang diketahui dengan Hibernate.
Di JPA 1.0 solusinya adalah keluar dari nama kolom dengan backticks:
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
Di JPA 2.0 dan yang lebih baru, Anda cukup menempatkan tanda kutip di sekitar nama kolom, mis.
@Column(name = "\"USER-NO\"")
Referensi:
Membuat bidang dengan nama kata yang dicadangkan dengan JPA