Cześć wszystkim, dopiero poznaję hibernate i napotkałem pewien problem mianowicie nie mogę odczytać Stringów za bazy danych.
Mam klasę modelową Użytkownik:
package pl.ahex.Drinkosik.Models;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.constraints.Size;
//import org.springframework.cache.annotation.EnableCaching;
@Entity
@Table(name="Uzytkownicy", uniqueConstraints = {@UniqueConstraint(columnNames={"nick"})})
public class Uzytkownik {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="user_id")
private Long id;
@Lob
@Column(nullable=false, unique=true, name="nick",length=80,columnDefinition="varchar(80) not null unique")
@Size(max=80)
private String nick;
@Column(nullable=false)
private String password;
private String avatarPath;
@OneToMany
private Set<Uzytkownik> znajomi;
@Override
public String toString() {
return "Uzytkownik [id=" + id + ", nick=" + nick + ", password=" + password + ", avatarPath=" + avatarPath
+ ", znajomi=" + znajomi + "]";
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
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 String getAvatarPath() {
return avatarPath;
}
public void setAvatarPath(String avatarPath) {
this.avatarPath = avatarPath;
}
public Set<Uzytkownik> getZnajomi() {
return znajomi;
}
public void setZnajomi(Set<Uzytkownik> znajomi) {
this.znajomi = znajomi;
}
@Override
public boolean equals(Object obj) {
if (obj != null) {
if (obj instanceof Uzytkownik) {
Uzytkownik tmp = (Uzytkownik) obj;
if (tmp.getId() == this.getId() && tmp.getNick().equals(this.getNick())) return true;
}
}
return false;
// TODO Auto-generated method stub
//return super.equals(obj);
}
}
Oraz metodę testującą:
@Test
public void Testii() {
Uzytkownik u = ud.getOneById(4L);
// System.out.println(u.getNick().length());
char[] tmp = u.getNick().toCharArray();
for (int i = 0; i < tmp.length; i++) {
System.out.println((int)tmp[i] + " -> " + (char) tmp[i]);
}
assertEquals(u.getNick(), "Ahex");
}
Po wykonaniu testu w polu nick mam coś takiego: " ".
Output z eclipse:
0 ->
0 ->
0 ->
0 ->
0 ->
0 ->
0 ->
Natomiast w bazie danych :
Nie rozumiem dlaczego pobrane Stringi mają taką dziwną wartość. Szukałem w google i na stackoverflow ale nic konkretnego nie znalazłem. Obstawiam, że popełniłem jakiś mały głupi błąd, którego nie mogę znaleźć.
Z góry bardzo dziękuję za pomoc i pozdrawiam ;)