TypeMismatchException das vorausgesetzt, ID ist der falsche Typ
Während der Arbeit an meiner ersten app in den Ruhezustand versetzt werden. Beim Versuch zum abrufen eines Benutzer-Objekt aus der DB bekomme ich die folgende exception:
org.hibernate.TypeMismatchException: Die id von der falschen Art für
class org.cw.form.Benutzer. Erwartet: class java.lang.Integer, Klasse
java.lang.String
bei org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:109)
bei org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
bei org.hibernate.impl.SessionImpl.Belastung(SessionImpl.java:823)
bei org.hibernate.impl.SessionImpl.Belastung(SessionImpl.java:816)
Erstellt habe ich die Tabelle BENUTZER mit folgenden postgreSQL:
CREATE SEQUENCE user2_id_seq;
CREATE TABLE USERS(id integer NOT NULL DEFAULT nextval('user2_id_seq'), user_name varchar(45) NOT NULL UNIQUE , password varchar(45) NOT NULL, email varchar(45) NOT NULL, PRIMARY KEY (id));
Und die User-entity so definiert:
@Entity @Table(name="USERS") public class User {
@Id
@Column(name="ID")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column(name="USER_NAME", unique = true)
private String userName;
@Column(name="PASSWORD")
private String password;
@Column(name="EMAIL")
private String email; .. all the getters and setters...
Bin ich ich etwas fehlt?
InformationsquelleAutor special0ne | 2012-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre es einfacher zu beantworten, wenn Sie zeigen würde, wie Sie Benutzer importieren. Basierend auf message:
Ich denke, Sie sind die Bereitstellung von String anstelle von korrektem Typ (Integer):
InformationsquelleAutor Mikko Maunu
Ich weiß wirklich nicht, ob es das Problem behoben, aber da man sich mit Sequenzen zum generieren von ids auf der db Seite, ich denke, Sie sollten mit einer Sequenz-generator :
Bitte Lesen Sie diesen Beitrag für weitere details : Überwintern Sequenz, die auf oracle, @GeneratedValue(strategy = GenerationType.AUTO)
InformationsquelleAutor ndeverge
Lösung für Ihr problem.
InformationsquelleAutor HelterShelter
Ich hatte einen anderen Täter, der die Erstellung dieser Ausgabe: ich hatte kopieren-einfügen einer anderen Unternehmens-repository, das einen String als primary key geben.
Also ich hatte
in Kombination mit
produziert die Fehlermeldung.
Einfach ändern Sie den interface-Typ von String auf Integer behoben das Problem für mich.
InformationsquelleAutor Jan Papenbrock
Ich hatte auch das gleiche Problem, Wenn Sie id als autoincrement, dann ist es nicht erforderlich, alle setter, erhalten nur in Ordnung ist, wie unten erwähnt.
InformationsquelleAutor raks
Bekam ich dieses problem, als ich versuchte, die Vererbung verwenden, der für den Bezeichner der Klasse (@IdClass).
InformationsquelleAutor CSpille