使用PostgreSequence,Java Short会发生什么?

时间:2012-03-26 04:48:47

标签: jpa sequence short

嘿,我没想到。我使用JPA SequenceGenerator作为我的数字素数键,开箱即用。嘿但是Java短裤发生了什么。当我的实体有短ID时,序列不会生成一个值,而是始终分配0导致重复键的原因。 :S。

我只是我,或者你不能将短片映射到序列对象?它在数据库中创建了sequece,但它似乎没有在其上调用nexval。

我正在使用:eclipselink 2.3,openjdk7,ubuntu oneiric amd64,eclipse。

有些代码:

这有效:

@Id @GeneratedValue(strategy= GenerationType.SEQUENCE,generator="CategoriaDeportiva_SEQ")
@SequenceGenerator(name = "CategoriaDeportiva_SEQ", allocationSize=1, initialValue=1, sequenceName="CategoriaDeportiva_SEQ")
private int id;

这不是:

@Id @GeneratedValue(strategy= GenerationType.SEQUENCE,generator="CategoriaDeportiva_SEQ")
@SequenceGenerator(name = "CategoriaDeportiva_SEQ", allocationSize=1, initialValue=1, sequenceName="CategoriaDeportiva_SEQ")
private short id;

1 个答案:

答案 0 :(得分:0)

这很奇怪。您是否在日志中出现任何错误,如果将EclipseLink日志记录设置为最佳,则会记录哪些SQL?

这是Postgres或EclipseLink的问题。 在Postgres中绑定一个short可能会遇到一些问题,为了解决这个问题,您可以在@Id映射上使用@Convert和@TypeConverter(dataType = Integer.class)来将其绑定为int。

您也可以在其他数据库上尝试确认它是否是Postgres问题。

如果是EclipseLink问题,请记录错误。

一般情况下,使用short作为Id不是一个好主意,它很容易用完Ids。即使使用int也不建议,长期最好。