我在hibernate中插入一段信息,为什么提示不能将值 NULL 插入列 'isbn',表 'books.dbo.titles';列不允许有空值。INSERT 失败。
bk.setISBN("111111");
我写了的啊
public class BooksBean implements java.io.Serializable{
private String ISBN;
private String title;
.......
package com.myweb;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
public class Test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration conf=new Configuration().configure();
SessionFactory sf=conf.buildSessionFactory();
Session session=sf.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
BooksBean bk=new BooksBean();
bk.setISBN("111111");
bk.setCopyright("1");
bk.setEditionNumber(1);
bk.setImageFile("1");
bk.setPrice(1.11);
bk.setPublisherID(1);
bk.setTitle("1");
session.save(bk);
tx.commit();
}catch(Exception e){
if(null!=tx){
tx.rollback();
}
e.printStackTrace();
}finally{
session.close();
} }}

解决方案 »

  1.   

    肯定是你ORM的映射问题,你把下面的ISBN改成   isbn  试试public class BooksBean implements java.io.Serializable{
    private String ISBN;
    private String title;
    .......
      

  2.   

    如果还不行的话,就把BooksBean的ORM映射文件贴出来看看
      

  3.   

    改了ISBN为小写isbn 还是不行 
    不能将值 NULL 插入列 'isbn',表 'books.dbo.titles';列不允许有空值。INSERT 失败。
      

  4.   

    就把BooksBean的ORM映射文件贴出来看看
      

  5.   

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                                                         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    <class name="com.myweb.BooksBean" table="titles">
    <id name="isbn" type="java.lang.String">
    <column name="isbn"/>
    <generator class="native"/>
    </id>
    <property name="title" type="java.lang.String">
    <column name="title" length="100"/>
    </property>
    <property name="editionNumber" type="java.lang.Integer">
    <column name="editionNumber" />
    </property>
    <property name="copyright" type="java.lang.String">
    <column name="copyright" length="4"/>
    </property>
    <property name="imageFile" type="java.lang.String">
    <column name="imageFile" length="20"/>
    </property>
    <property name="publisherID" type="java.lang.Integer">
    <column name="publisherID" />
    </property>
    <property name="price" type="java.lang.Double">
    <column name="price" />
    </property>
    </class></hibernate-mapping>
      

  6.   

    把你的orm映射文件贴出来吧。
      

  7.   

    我设断点看变量isbn有值啊!! 郁闷不知道哪错了~
      

  8.   

    应该是 Hibernate的映射文件  有问题 
     
     表里的字段名 isbn -->  实体类中的  isbn  
      字段名大小写无所谓,  类型要一致。还不行的话,把这个映射文件贴出来吧。 
      

  9.   

    找到错了谢谢大家!!
    我把<generator class="native"/>
    改为了
    <generator class="assigned"/>
    居然就好了!!
      

  10.   

    native -- 表示自增 可用在sqlserver 等有自增的
    sequence -- 它可用于oracle 借助序列自增