hibernate uuid id生成策略问题

斯巴达2k 2012-06-18 05:21:44
大家有没遇到这样的问题啊,我用uuid的主键生成策略,修改数据的时候变成了新增,不知道怎么解决,哪位大神帮解决下。代码如下:

//JPA 基类的标识
@MappedSuperclass
public abstract class PkidEntity {

/**
* 主键及主键生成方式
*/
@Id
@GenericGenerator(name="hibernate-uuid",strategy="uuid")
@GeneratedValue(generator="hibernate-uuid")
@Column(name="pkid", nullable=false)
protected String pkid;


public String getPkid() {
return pkid;
}

public void setPkid(String pkid) {
this.pkid = pkid;
}


}


但是我用序列的生成方式则没有这样的问题

@MappedSuperclass
public abstract class IdEntity {

protected Long id;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PKGen")
@SequenceGenerator(name = "PKGen", sequenceName = "HIBERNATE_SEQUENCE", allocationSize = 1)
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
}
...全文
1032 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingleigroup 2014-07-16
  • 打赏
  • 举报
回复
神啊救救我吧
斯巴达2k 2012-06-25
  • 打赏
  • 举报
回复
我找到问题了,原来不是hibernate的问题,是我页面的PKID没有传进来,唉
斯巴达2k 2012-06-21
  • 打赏
  • 举报
回复
有没有大神指导下啊
斯巴达2k 2012-06-19
  • 打赏
  • 举报
回复
天啊,居然没人回答,太伤心了
斯巴达2k 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

引用 7 楼 的回复:

看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator

我不想用序列啊,我想用自动生成的id
新增和修改的方法都是save


试试换成saveorupdate
[/Quote]

我用的是spring data jpa ,里面没有saveorupdate 方法
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator

我不想用序列啊,我想用自动生成的id
新增和修改的方法都是save
[/Quote]

试试换成saveorupdate
斯巴达2k 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator
[/Quote]
我不想用序列啊,我想用自动生成的id
新增和修改的方法都是save
阿甘1976 2012-06-19
  • 打赏
  • 举报
回复
看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator
皮皮 2012-06-19
  • 打赏
  • 举报
回复
你修改的方法是什么?
斯巴达2k 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

我一般是这样写
Java code

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
public String getId() {
return this.id;
}……
[/Quote]
改成你那样也不行,不知道还有哪里需要配置
阿甘1976 2012-06-19
  • 打赏
  • 举报
回复
我一般是这样写

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
public String getId() {
return this.id;
}

public void setId(String id) {
this.id = id;
}
斯巴达2k 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你的 update 长啥样? 贴出来看看啊
[/Quote]

update是用的spring data jpa啊
这是继承

public interface DictionaryDao extends PagingAndSortingRepository<Dictionary, String>,DictionaryDaoCustom{}

这是调用save

@Transactional(readOnly = false)
public void saveDictionary(Dictionary entity) {
dictionaryDao.save(entity);
}
  • 打赏
  • 举报
回复
你的 update 长啥样? 贴出来看看啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧