package com.bjsxt.hibernate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "_teacher")
public class Teacher {
private String id;
private String name;
private String title;
@Id
@GeneratedValue
/*@GeneratedValue(generator = "system-unid")
@GenericGenerator(name = "system-unid", strategy = "uuid")
@Column(length = 32)*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
实体类,generatedValue不设值,数据库插入生成id报错
WARN org.hibernate.util.JDBCExceptionReporter:100 - SQL Error: 1364, SQLState: HY000
ERROR org.hibernate.util.JDBCExceptionReporter:101 - Field 'id' doesn't have a default value,
用第二种生成id的方式(被注释)没有问题
测试类
package com.bjsxt.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class HibernateIDTest {
private static SessionFactory sessionFactory;
@BeforeClass
public static void beforeClass() {
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
}
@AfterClass
public static void afterClass() {
sessionFactory.close();
}
@Test
public void testStudentSave() {
Student s = new Student();
s.setName("zhangsan");
s.setAge(24);
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
}
@Test
public void testTeacherSave() {
Teacher t = new Teacher();
//断点在这儿,对象t的id一直是null
t.setName("t1");
t.setTitle("middle");
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
}
public static void main(String[] args) {
beforeClass();
}
}