读书人

hibernate3.6.0 @GeneratedValue 有关

发布时间: 2012-03-23 12:06:21 作者: rapoo

hibernate3.6.0 @GeneratedValue 问题
为什么我直接
//@GeneratedValue
public int getId() {
return id;
}
会提示Field 'id' doesn't have a default value
但是我用表生成策略
@TableGenerator(
name = "teacher_id", //表ID策略名字
table = "teacher_tableId", //数据库表名字
pkColumnName = "pk_key",//字段名1 pk=primary key
valueColumnName = "pk_value", //字段名2
pkColumnValue = "Teacher",//字段1值
allocationSize = 1//每次增加的值...详情看视频hibernate 23
)
@GeneratedValue(strategy=GenerationType.TABLE,generator="teacher_id")
就没有错误了、
不是说@GeneratedValue这个是默认ID自增的吗。
这个错误恼火了好久。。。。。。。。。

[解决办法]
@GeneratedValue(strategy=GenerationType.TABLE,generator="teacher_id")
配置错,

JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。

你用GenerationType.TABLE,需要另一个表格来保存主键.

如果想主键自增长,就使用AUTO

@GeneratedValue(strategy = GenerationType.AUTO)
在指定主键时,如果不指定主键生成策略,默认为AUTO。
[解决办法]
hibernate主键策略生成器就更多,
[解决办法]
学习学习!!!
[解决办法]
你差了最基本的@ID 注解?
如果是oracle,你看是否有相应的sequence创建?
[解决办法]
@Id
@GeneratedValue

读书人网 >J2EE开发

热点推荐