使用所有主键值,新行没有 space。我能做些什么?
all primary key values are used and there is no space for new rows. what can I do?
我有一个无法更改的实体 supper class,它包含一个作为 OID(主键)归档的整数。
如您所知,整数可以具有 -2,147,483,648 到 2,147,483,647 之间的值,现在使用所有这些范围。不幸的是我无法将整数类型更改为 long。所以 hibernate 开始在这个范围内创建另一个有效的键,但是 oracle 说这是一个唯一的约束违规。
任何想法将不胜感激。
实体 class:
@MappedSuperclass
public abstract class EtVersionlessEntity
{
private Integer oid;
@Id
public Integer getOid()
{
return this.oid;
}
Oracle 列类型为 NUMBER(10)。
将数据类型更改为可以容纳更大值的类型。
unfortunately I can't change integer type to long.
那你就卡住了;你需要使用更大的数据类型,但你 unwilling/unable 这样做所以你现在有 运行 out of space.
你要么:
- 接受数据类型不会改变并且您有 运行 个唯一值;或
- 您增加了所使用的数据类型的大小,以允许您拥有更大范围的值。
有人给了我一个解决方案,我想作为答案分享:
- 创建一个类似于 jar 文件中的 class 的 class(具有相同的
名称和包装)
删除"extends"并定义一个相同的变量
名称作为 long 类型的父级:
private long oid;
@Id
public long getOid()
{
return this.oid;
}
3.go 到 ORM 文件,并为父
定义的键添加所有规范
<mapped-superclass class="EtEntity">
<attributes>
<id name="oid">
<generated-value generator="HI_LO_SEQ" strategy="TABLE" />
<table-generator name="HI_LO_SEQ" allocation-size="1000"/>
</id>
</attributes>
</mapped-superclass>
更改数据库列以接受长值 (NUMBER(19))
就是这样!工作...
我有一个无法更改的实体 supper class,它包含一个作为 OID(主键)归档的整数。 如您所知,整数可以具有 -2,147,483,648 到 2,147,483,647 之间的值,现在使用所有这些范围。不幸的是我无法将整数类型更改为 long。所以 hibernate 开始在这个范围内创建另一个有效的键,但是 oracle 说这是一个唯一的约束违规。 任何想法将不胜感激。 实体 class:
@MappedSuperclass
public abstract class EtVersionlessEntity
{
private Integer oid;
@Id
public Integer getOid()
{
return this.oid;
}
Oracle 列类型为 NUMBER(10)。
将数据类型更改为可以容纳更大值的类型。
unfortunately I can't change integer type to long.
那你就卡住了;你需要使用更大的数据类型,但你 unwilling/unable 这样做所以你现在有 运行 out of space.
你要么:
- 接受数据类型不会改变并且您有 运行 个唯一值;或
- 您增加了所使用的数据类型的大小,以允许您拥有更大范围的值。
有人给了我一个解决方案,我想作为答案分享:
- 创建一个类似于 jar 文件中的 class 的 class(具有相同的 名称和包装)
删除"extends"并定义一个相同的变量 名称作为 long 类型的父级:
private long oid; @Id public long getOid() { return this.oid; }
3.go 到 ORM 文件,并为父
定义的键添加所有规范<mapped-superclass class="EtEntity"> <attributes> <id name="oid"> <generated-value generator="HI_LO_SEQ" strategy="TABLE" /> <table-generator name="HI_LO_SEQ" allocation-size="1000"/> </id> </attributes> </mapped-superclass>
更改数据库列以接受长值 (NUMBER(19))
就是这样!工作...