hibernate uuid id生成策略问题

J2EE 码拜 9年前 (2015-04-20) 1126次浏览 0个评论
 

大家有没遇到这样的问题啊,我用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;
	}
}
hibernate uuid id生成策略问题
天啊,居然没人回答,太伤心了 
hibernate uuid id生成策略问题
你的 update 长啥样? 贴出来看看啊
hibernate uuid id生成策略问题
引用 2 楼  的回复:

你的 update 长啥样? 贴出来看看啊

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

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

这是调用save

	@Transactional(readOnly = false)
	public void saveDictionary(Dictionary entity) {
		dictionaryDao.save(entity);
	}
hibernate uuid id生成策略问题
50分
我一般是这样写

    @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;
    }
hibernate uuid id生成策略问题
引用 4 楼  的回复:

我一般是这样写
Java code

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

改成你那样也不行,不知道还有哪里需要配置

hibernate uuid id生成策略问题
你修改的方法是什么?
hibernate uuid id生成策略问题
20分
看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator
hibernate uuid id生成策略问题
引用 7 楼  的回复:

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

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

hibernate uuid id生成策略问题
30分
引用 8 楼  的回复:

引用 7 楼  的回复:

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

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

试试换成saveorupdate

hibernate uuid id生成策略问题
引用 9 楼  的回复:

引用 8 楼  的回复:

引用 7 楼  的回复:

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

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

试试换成saveorupdate

我用的是spring data jpa ,里面没有saveorupdate 方法

hibernate uuid id生成策略问题
有没有大神指导下啊
hibernate uuid id生成策略问题
我找到问题了,原来不是hibernate的问题,是我页面的PKID没有传进来,唉
hibernate uuid id生成策略问题
神啊救救我吧

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate uuid id生成策略问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!