在MySQL中id设置为string类型,在怎么设置为自动增长啊?

安蒙1278 2017-11-20 08:34:47
在ssh项目中,MySQL设置id为string类型,然后想数据库插入数据的时候,
@Override
public void save(String name, String pwd) {
Tuser t=new Tuser();
t.setId(UUID.randomUUID().toString());
t.setName(name);
t.setPwd(pwd);
t.setCreatedatetime(new Date());
userDao.save(t);
}

id的数据没有办法插入。
id设置为string类型。我知道id为int类型时自动增长,可是string类型是怎么办?

报错显示 unkonw integer data type for ids:java.lang.string
...全文
3536 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
什么都不能 2017-11-22
  • 打赏
  • 举报
回复
我就问题 “随便”的自增长是什么? id自赠用数值,如果一个varchar类型里保存了整型,那么为什么不定义成整型呢?java里用max(id) 要注意服务器集群并发的影响,应该在方法上加锁防止并发产生相同的ID,如果没有不考虑到直观易懂可以考虑guid和uuid作为ID
饺克力克 2017-11-22
  • 打赏
  • 举报
回复
只有Integer可以自增长。可以把String转换为int加1即可,但要注意同步。
日生双翼 2017-11-22
  • 打赏
  • 举报
回复
string不能自动增长,除非你自己写一个函数来生成
十月def 2017-11-22
  • 打赏
  • 举报
回复
@Id @GeneratedValue(generator="system_uuid") @GenericGenerator(name="system_uuid",strategy="uuid") @Column(name = "ID", unique = true, nullable = false, length = 20) public String getId() { return this.id; } @GeneratedValue:主键的产生策略,通过strategy属性指定。   主键产生策略通过GenerationType来指定。GenerationType是一个枚举,它定义了主键产生策略的类型。   1、AUTO 自动选择一个最适合底层数据库的主键生成策略。如MySQL会自动对应auto increment。这个是默认选项,即如果只写@GeneratedValue,等价于@GeneratedValue(strategy=GenerationType.AUTO)。   2、IDENTITY 表自增长字段,Oracle不支持这种方式。   3、SEQUENCE 通过序列产生主键,MySQL不支持这种方式。   4、TABLE 通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。不同的JPA实现商生成的表名是不同的,如 OpenJPA生成openjpa_sequence_table表,Hibernate生成一个hibernate_sequences表,而TopLink则生成sequence表。这些表都具有一个序列名和对应值两个字段,如SEQ_NAME和SEQ_COUNT。   在我们的应用中,一般选用@GeneratedValue(strategy=GenerationType.AUTO)这种方式,自动选择主键生成策略,以适应不同的数据库移植。   如果使用Hibernate对JPA的实现,可以使用Hibernate对主键生成策略的扩展,通过Hibernate的@GenericGenerator实现。   @GenericGenerator(name = “system-uuid”, strategy = “uuid”) 声明一个策略通用生成器,name为”system-uuid”,策略strategy为”uuid”。   @GeneratedValue(generator = “system-uuid”) 用generator属性指定要使用的策略生成器。   这是我在项目中使用的一种方式,生成32位的字符串,是唯一的值。最通用的,适用于所有数据库。
Royal_lr 2017-11-22
  • 打赏
  • 举报
回复
如果是String,直接用uuid,或者时间值,,目的保持唯一就好了
心灵之火. 2017-11-22
  • 打赏
  • 举报
回复
用uuid吧
  • 打赏
  • 举报
回复
程序自增,程序内部写一个同步自增的获取id的方法。每次插入之前,调用获取id的方法。 可以考虑用id池
Sunyiban 2017-11-21
  • 打赏
  • 举报
回复
自增长的STRING类型? 哥们还是把数据库自动类型改了吧~~~干嘛跟自己过不去~~
自由自在_Yu 2017-11-21
  • 打赏
  • 举报
回复
插入数据的时候 select max(id) from table 然后这个id加1
鲜衣怒码 2017-11-21
  • 打赏
  • 举报
回复
可以在后台用代码实现,在userDao类中加上查询user表最后id的方法,在saveUser方法中先调用该方法获得最后id,再按自己需求自増为newId,最后setNewId就可以了
baidu_41125259 2017-11-21
  • 打赏
  • 举报
回复
在设计表中有自增长的选项
  • 打赏
  • 举报
回复
你想这么做就得从代码中控制 给String 字段 唯一约束 然后在插入的时候弄个String+id拼起来 只要id不自增 这整体就是自增
xwn_2016 2017-11-21
  • 打赏
  • 举报
回复
用序列可以111
故人报剑归 2017-11-21
  • 打赏
  • 举报
回复
找一个可视化数据库软件,研究研究,基本操作都有
繁华终归落尽 2017-11-21
  • 打赏
  • 举报
回复
创建序列表name,value,初始uid的值比如name:uid,value:1 每次获取完之后,value+1
繁华终归落尽 2017-11-21
  • 打赏
  • 举报
回复
引用 2 楼 an1278 的回复:
IdMapper是什么?是不是在oracle中就不会出现这种问题
实现就是6#那样
安蒙1278 2017-11-20
  • 打赏
  • 举报
回复
IdMapper是什么?是不是在oracle中就不会出现这种问题
繁华终归落尽 2017-11-20
  • 打赏
  • 举报
回复
自增长就不能是varchar啊,非要自增长又要varchar的话,就自定义序列,t.setId(IdMapper.get("Uid").toString());

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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