Java 播放框架oracle序列错误
我正在尝试使用以下代码从oracle获取序列:Java 播放框架oracle序列错误,java,oracle,playframework-2.0,Java,Oracle,Playframework 2.0,我正在尝试使用以下代码从oracle获取序列: // ID field @Column(name = "REC_ID", scale = 14) @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TEST") @SequenceGenerator(name="SEQ_TEST", sequenceName="SEQ_TEST", allocationSize=1) private long recId
// ID field
@Column(name = "REC_ID", scale = 14)
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TEST")
@SequenceGenerator(name="SEQ_TEST", sequenceName="SEQ_TEST", allocationSize=1)
private long recId;
序列号是14位长。问题是我在终端上遇到错误:
原因:java.sql.SQLException:数值溢出
位于oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:4381)
位于oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:112)
位于oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:942)
在com.avaje.ebean.config.dbplatform.SequenceIdGenerator.getMoreIds(SequenceIdGenerator.java:194)上
... 还有31个
我确实尝试使用长、双、大十进制。当将序列更改为10位时,它可以工作,所以我感觉它与64位有关,但我在OSX上运行java,所以它是64位java
知道有什么问题吗 调用堆栈显示了对“.getInt()”的调用,这意味着出于某种原因,它试图以int而不是long返回值。不知道为什么。有趣。我看到了,我也不确定为什么当我把场地设置得这么长时,Play会认为它是int。。我想知道是否有人知道如何强制它使用Long。似乎在ebean中有一个默认使用的限制,根据中的getMoreIds代码,它只返回int而不是Long。非常奇怪。