JPA 唯一约束条件@UniqueConstraint注解在Oracle失效问题(数据库表名字段名长度问题)

  问题描述:使用JPA创建表,在实体类上加如下注解,在mysql中创建表并创建唯一约束条件,但是在Oracle中创建表后
           唯一约束条件却创建不了。
@Table(name="ABCD_ORGMAP", uniqueConstraints = { 
	      @UniqueConstraint(name = "UNIQ_ABCD_ORGMAP_GROUP_REPORTORG",columnNames = {"groupId","reportOrgCode"})
	})
public class OrgMap {
    ....
}

最后发现是唯一约束条件名称过长,oracle里凡是需要命名的对象其标识符默认均不能超过30个字符。

各个数据库标识符长度
今天修改数据库表名,感觉现有的定义列名都无含义。。。修改后被同事告知,列名有点长,怕有的数据库不支持。。

我头一次听说数据库表名和列名长度限制,so搜索下。
数据库-------------表名------------ 字段名

mysql ------------ 64 -------------- 64

oracle--------------30 ---------------30

db2 ----------------128--------------128

access-------------64 ---------------64

mssql -------------128 ------------ 128

都是网上找的,不知道对否,也没时间找它们的文档看了。。好像还看到oracle可以修改最长的限制。。。希望有的看官可以斧正

详细链接
oracle里凡是需要命名的对象其标识符均不能超过30个字符,这是因为数据字典表的与记录这些数据库对象相关信息的系统表相关的字段的数据类型已经定义好了这样的大小。你可以查数据字典,里面有定义,依次为USER_TABLES,USER_TAB_COLUMNS,USER_CONSTRAINTS。例如,USER_TABLES这个系统表视图里对表名这个字段定义的数据类型就是varchar2(30),即这个字段最大只能为30个字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值