Die Verwendung von Bindestrichen in Spaltennamen scheint ein bekanntes Problem mit Hibernate zu sein.
In JPA 1.0 besteht die Problemumgehung darin, den Spaltennamen mit Backticks zu maskieren:
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
In JPA 2.0 und höher können Sie den Spaltennamen einfach in Anführungszeichen setzen, z. B.
@Column(name = "\"USER-NO\"")
Referenz:
Feld mit reserviertem Wortnamen wird erstellt mit JPA