I am new in Hibernate.when i save particular entity then it rewrite data from existing one.
I have used ID as auto generated as below:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
Here i save Entity as below:
class StudDAO() {
public static void main(String[] args){
StudDAO obj = new StudDAO();
Stud stud = new Stud();
stud.setName("Test");
stud.setCity("Mumbai");
obj.createStud(stud);
}
public void createStud(Stud stud) {
try {
Session session = HibernateSessionFactory.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
session.save(stud);
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
transaction.rollback();
}
}
}
if i will change entity value next time then it should generate next id rather than starting form 1st id.
any time result would be same like
mysql> select * from stud;
+----+--------+------+
| id | city | name |
+----+--------+------+
| 1 | Mumbai | Test |
+----+--------+------+
1 row in set (0.00 sec)
what i want is in result like below:
mysql> select * from stud;
+----+--------+------+
| id | city | name |
+----+--------+------+
| 1 | Mumbai | Test |
| 2 | Mumbai | Test |
+----+--------+------+
2 rows in set (0.00 sec)
Please help me for same..
I realize this is asked a year ago, but I had the exact same problem as you and I figured I’d post it in case anyone else has it.
It turned out it was a setting in my session factory:
Look for the setting hibernate.hbm2ddl.auto, most probably you have it set to create. This setting does things when your session factory is created. What create does is that it drops the existing schema (at least the tables which it will use) and creates a new one, making it appear like it is overwriting the rows in your table.
There are a few different values you can choose from here. For development I believe you’d want it set update as it will create new tables for you if they don’t already exist (just like create), but if the table already exists it will update the schema.
For production you should stick to validate as it will not alter you schema, just validate it 🙂
For more details of the different values, check this excellent answer