package com.bjsxt.hibernate.model;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Product {

private int id;
private String name;
private int price;
private String brand;
private String desc;
public String getBrand() {
return brand;
}
public String getDesc() {
return desc;
}

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public void setBrand(String brand) {
this.brand = brand;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(int price) {
this.price = price;
}
}
上面这个类用hibernate自动生成表会出错,然后我去掉一些字段只剩下id和name就没有问题,说明我其他配置都是对的,不过上面的类写的有什么问题吗,希望指点,谢谢

解决方案 »

  1.   

    是不是有不可以为null的字段?
      

  2.   

    是通过entity去生成数据库的表????
      

  3.   

    @Entity @Table呢 你要生成的表名呢
      

  4.   

    private String desc; 
    desc是SQL标准语言的关键词,需要用@Column(name="desc_")来处理一下(加一下划线或其它字符)。另外建议将所有需要持久化到数据库的字段都标上注解,指定name字段名称、length字段长度、nullable是否为空等等。
      

  5.   

    没有指定@Table,ORM则用类名作表名来生成表。