Dziwna forma Stringów po odczycie z bazy za pomocą HBM

0

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 :
user image

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 ;)

0

Już rozgryzłem problem :P
Problem był w kodowaniu bazy. Miałem ustawione na utf16, po ustawieniu na utf8 Stringi śmigają jak należy.

Temat do zamknięcia

1 użytkowników online, w tym zalogowanych: 0, gości: 1