在学习hibernate annotation的时候遇到一个疑问:SQL SERVER数据库有自增主键的时候,使用annotations的时候设置@Id后,插入提示:当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Teacher' 中的标识列插入显式值。
代码如下:
- Java code
public static void main(String[] args) { Teacher t = new Teacher(); t.setName("annotations"); t.setTitle("annotations test"); Configuration cfg = new AnnotationConfiguration(); SessionFactory sf = cfg.configure().buildSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); sf.close(); }@Entitypublic class Teacher { private int id; private String name; private String title; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } 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; }
------解决方案--------------------
先在数据库把IDENTITY_INSERT 设置为on
然后执行插入语句试试
------解决方案--------------------
hbm.xml 标识列是否正确设置了设置了<id name="aid" type="java.lang.Integer">
<column name="aid" />
<generator class="native 标识类型" />
</id>