日期:2014-05-19  浏览次数:20768 次

hibernate annotations疑问
在学习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();
        
        
    }


@Entity

public 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>