2012-03-26 7 views
0

Hey ich habe das nicht erwartet. Ich benutze JPA SequenceGenerator für meine numerischen Schlüssel, funktioniert nicht. Hey, aber was passiert mit Java-Shorts. Wenn meine Entitäten eine kurze ID haben, dann erzeugt die Sequenz keinen Wert, sondern weist immer 0 zu, was einen doppelten Schlüssel verursacht. : S.Was passiert mit Java Short mit PostgreSequence?

Ich bin nur ich, oder Sie können einen Kurzschluss zu einem Sequenzobjekt zuordnen? Es erzeugt das Sequece in der Datenbank, aber es scheint nicht nexval darauf zu nennen.

Ich benutze: eclipselink 2.3, openjdk7, ubuntu oneiric amd64, Sonnenfinsternis.

hier einige Code:

Dies funktioniert:

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

Diese sieht nicht:

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

Antwort

0

Das ungerade ist. Erhalten Sie Fehler in Ihren Protokollen, welche SQL-Protokolle werden protokolliert, wenn Sie die EclipseLink-Protokollierung auf den Feinsten setzen?

Es ist entweder ein Problem mit Postgres oder EclipseLink. Es könnte ein Problem mit dem Binden einer Abkürzung in Postgres sein, zur Problemumgehung könnten Sie stattdessen @Convert und @TypeConverter (dataType = Integer.class) für die @Id-Zuordnung verwenden, um sie stattdessen als int zu binden.

Sie können es auch in einer anderen Datenbank versuchen, um festzustellen, ob es sich um ein Postgres-Problem handelt.

Wenn es sich um ein EclipseLink-Problem handelt, melden Sie einen Fehler.

Im Allgemeinen eine kurze als eine ID ist keine sehr gute Idee, es wäre sehr einfach, aus Ids ausgehen. Selbst wenn int nicht empfohlen wird, ist long am besten.