Mam baze danyc z kluczem głównym jako pole AUTOINCREMENT. Oto mój kod:
@Entity
@Table(name = "[Request]")
public class Request implements Serializable{
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
int id;
@Column(name = "[Date]")
java.sql.Timestamp date;
...
}
public static Request addRequest(Request r) throws IOException{
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx=null;
try{
tx = session.beginTransaction();
session.save(r);
tx.commit();
}
catch (Exception e) {if (tx!=null) tx.rollback();e.printStackTrace();}
finally {session.close();}
return r;
}
tworz obiekt:
request = new Request();
Timestamp date = new Timestamp(System.currentTimeMillis());
request.setDate(date);
A do bazy chce trafić obiekt:
Request{id=0, date=2017-12-11 1631.443},
Skąd to:0 w id? Otrzymuje taki bląd z bazy: DEFAULT or NULL are not allowed as explicit identity values.
Wcześniej pracowałem na Oracle i nie mialem tego typu problemów, jeśli typ id jest ustawiony na autoincrement wyczytalem w dokumentacji że ustawiam strategy = GenerationType.IDENTITY i id powinno wstawiać się automatycznie. Co robie źle?