Zdá se, že používání pomlček v názvech sloupců je známý problém s režimem spánku.
V JPA 1.0 je řešením escapovat název sloupce pomocí backticks:
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
V JPA 2.0 a novějších můžete název sloupce jednoduše umístit do uvozovek, např.
@Column(name = "\"USER-NO\"")
Odkaz:
Vytváření pole s názvem vyhrazeného slova s JPAem