2013-03-04 37 views
1

如果该策略占据一席之地,Hib只是忽略一个id设置。休眠:在案例中插入一个具有自定义ID的实体:strategy = GenerationType.AUTO

有什么办法可以避免这种情况并保存策略?

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "id") 
public Long getId() { 
    return id; 
} 

...

Account account = new Account(); 
account.setId(1000L); 
account.setSmth(smth); 
... 
//Tried to do so, but tomcat hangs on this string. 
session.createSQLQuery("ALTER TABLE account AUTO_INCREMENT = " + account.getId() + ";").executeUpdate(); 
session.save(account); 
... 

Spasibo!

回答

0

如果有必要使用这种策略可以存储与分配的ID实体:

@GeneratedValue(strategy="org.hibernate.id.Assigned") 
public Long getId() { 
    ... 
} 

唯一的缺点是,你必须包括Hibernate需要认识到,如果它是一个新的或现有的实体版本字段:

@Version 
public Long getVersion() { 
    ... 
} 
0

只是删除如下GeneratedValue的批注,则实体将使用值asssigned ID。它在我的webapp中工作。

@GeneratedValue(strategy = GenerationType.AUTO)