Guten Tag,
ich habe folgendes JDO:
Und log4j beschert mir folgende Ausgabe, nachdem ich Hibernate etwas gesprächiger gemacht habe. Wie ihr seht, habe ich bis auf ein Attribut alle anderen auskommentiert, da ich in Betracht gezogen habe, dass die DB (mySql) mit Date vielleicht ein Problem haben könnte. Das Jdo habe ich so herunter getippt, wie alltäglich auf der Arbeit, nur nutze ich da eine MS SQL.
Wenn ich nun das Statement, was mir Hibernate erzeugt, in den DbVisualizer kopiere, bekomme ich die gleiche Fehlermeldung.
Nun ist mir unter mySql kein Schlüsselwort 'identity' bekannt. Entferne ich dies...
...bekomme ich meine neue Tabelle.
Wie bekomme ich Hibernate nun dazu, mir ein korrektes SQL Statement für eine mySql zu erzeugen?
ich habe folgendes JDO:
Java:
package org.pss.jdo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.GenerationType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
/**
*
* @author neonfly
*/
@Entity
@Table(name = "players")
@NamedQueries({
@NamedQuery(name = "Player.all", query = "from Player order by playerId")
})
public class Player implements Serializable {
public static String GET_ALL = "Player.all";
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer playerId;
@Column(nullable = false, length = 30)
private String nick;
// @Column(nullable = false, length = 100)
// private String email;
//
// @Column(nullable = false, length = 40)
// private String password;
//
// @Column(nullable = false, length = 255)
// private String securequestion;
//
// @Column(nullable = false, length = 255)
// private String secureanswer;
//
// @Column(nullable = false, length = 100)
// private String firstname;
//
// @Column(nullable = false, length = 100)
// private String surname;
// @Column(nullable = false, length = 100)
// private String street;
// private Integer streetnumber;
//
// private Integer postalcode;
// @Column(nullable = false, length = 100)
// private String city;
//
// @Column(nullable = false, length = 100)
// private String country;
//
// @Column(nullable = false, length = 100)
// private String region;
// private Integer phone;
//
// private Integer mobilephone;
// @Column(nullable = false, length = 10)
// private String gender;
//
// @Column(nullable = false, length = 10)
// private String birthday;
// @Temporal(javax.persistence.TemporalType.DATE)
// private Date regdate;
//
// @Column(length=1)
// private boolean termsaccepted;
//
// private Integer aiprotection;
public Player() {
}
public static String getGET_ALL() {
return GET_ALL;
}
public static void setGET_ALL(String GET_ALL) {
Player.GET_ALL = GET_ALL;
}
// public Integer getAiprotection() {
// return aiprotection;
// }
//
// public void setAiprotection(Integer aiprotection) {
// this.aiprotection = aiprotection;
// }
// public String getBirthday() {
// return birthday;
// }
//
// public void setBirthday(String birthday) {
// this.birthday = birthday;
// }
//
// public String getCity() {
// return city;
// }
//
// public void setCity(String city) {
// this.city = city;
// }
//
// public String getCountry() {
// return country;
// }
//
// public void setCountry(String country) {
// this.country = country;
// }
// public String getEmail() {
// return email;
// }
//
// public void setEmail(String email) {
// this.email = email;
// }
//
// public String getFirstname() {
// return firstname;
// }
//
// public void setFirstname(String firstname) {
// this.firstname = firstname;
// }
//
// public String getGender() {
// return gender;
// }
//
// public void setGender(String gender) {
// this.gender = gender;
// }
// public Integer getMobilephone() {
// return mobilephone;
// }
//
// public void setMobilephone(Integer mobilephone) {
// this.mobilephone = mobilephone;
// }
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
// public String getPassword() {
// return password;
// }
//
// public void setPassword(String password) {
// this.password = password;
// }
// public Integer getPhone() {
// return phone;
// }
//
// public void setPhone(Integer phone) {
// this.phone = phone;
// }
// public Integer getPlayerId() {
// return playerId;
// }
//
// public void setPlayerId(Integer playerId) {
// this.playerId = playerId;
// }
// public Integer getPostalcode() {
// return postalcode;
// }
//
// public void setPostalcode(Integer postalcode) {
// this.postalcode = postalcode;
// }
//
// public Date getRegdate() {
// return regdate;
// }
//
// public void setRegdate(Date regdate) {
// this.regdate = regdate;
// }
// public String getSecureanswer() {
// return secureanswer;
// }
//
// public void setSecureanswer(String secureanswer) {
// this.secureanswer = secureanswer;
// }
//
// public String getSecurequestion() {
// return securequestion;
// }
//
// public void setSecurequestion(String securequestion) {
// this.securequestion = securequestion;
// }
//
// public String getRegion() {
// return region;
// }
//
// public void setRegion(String region) {
// this.region = region;
// }
// public String getStreet() {
// return street;
// }
//
// public void setStreet(String street) {
// this.street = street;
// }
// public Integer getStreetnumber() {
// return streetnumber;
// }
//
// public void setStreetnumber(Integer streetnumber) {
// this.streetnumber = streetnumber;
// }
// public String getSurname() {
// return surname;
// }
//
// public void setSurname(String surname) {
// this.surname = surname;
// }
// public Boolean getTermsaccepted() {
// return termsaccepted;
// }
//
// public void setTermsaccepted(Boolean termsaccepted) {
// this.termsaccepted = termsaccepted;
// }
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Player other = (Player) obj;
if (this.playerId != other.playerId && (this.playerId == null || !this.playerId.equals(other.playerId))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 53 * hash + (this.playerId != null ? this.playerId.hashCode() : 0);
return hash;
}
}
Und log4j beschert mir folgende Ausgabe, nachdem ich Hibernate etwas gesprächiger gemacht habe. Wie ihr seht, habe ich bis auf ein Attribut alle anderen auskommentiert, da ich in Betracht gezogen habe, dass die DB (mySql) mit Date vielleicht ein Problem haben könnte. Das Jdo habe ich so herunter getippt, wie alltäglich auf der Arbeit, nur nutze ich da eine MS SQL.
Code:
[SIZE="2"]DEBUG - SchemaUpdate.execute(149) | create table players (playerId int identity not null, nick varchar(30) not null, primary key (playerId))
ERROR - SchemaUpdate.execute(155) | Unsuccessful: create table players (playerId int identity not null, nick varchar(30) not null, primary key (playerId))
ERROR - SchemaUpdate.execute(156) | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near 'identity not null, nick varchar(30) not null, primary key (playerId))' at line 1[/SIZE]
Wenn ich nun das Statement, was mir Hibernate erzeugt, in den DbVisualizer kopiere, bekomme ich die gleiche Fehlermeldung.
SQL:
create table players (playerId int identity not null, nick varchar(30) not null, primary key (playerId));
Code:
[SIZE="2"][CREATE - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'identity not null, nick varchar(30) not null, primary key (playerId))' at line 1
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec [0 successful, 0 warnings, 1 errors][/SIZE]
Nun ist mir unter mySql kein Schlüsselwort 'identity' bekannt. Entferne ich dies...
SQL:
create table players (playerId int not null, nick varchar(30) not null, primary key (playerId));
Code:
[SIZE="2"] [CREATE - 0 row(s), 0.068 secs] Command processed. No rows were affected
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.068/0.000 sec [0 successful, 1 warnings, 0 errors][/SIZE]
Wie bekomme ich Hibernate nun dazu, mir ein korrektes SQL Statement für eine mySql zu erzeugen?