Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / не идет Hibernate->SQLQuery, из бд работает??? / 5 сообщений из 5, страница 1 из 1
11.06.2012, 16:24:12
    #37834438
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не идет Hibernate->SQLQuery, из бд работает???
Решил решить свою проблему грубым способом, но он работает. Заносит записи в бд, но я не могу их прочитать!
Из консоли, все запросы проходят, все выдает, даже ArrayList-ы печатаются, а вот насмотрелся примеров, делаю 1в1, но все-равно не могу извлечь из бд?

Что не так?

Вот запрос,

Код: java
1.
2.
3.
4.
5.
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		List moveHystory = new ArrayList();
		moveHystory = (List)session.createSQLQuery("select moveHystoryPlayer1 from games where serverName='"+serverName+"'").list();
		session.getTransaction().commit();



Класс.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
@Entity
@Table(name="games")
public class SaveParams {
	
	@Id
	@Column(name="serverName")
	private String serverName;
	
	//@Column(name="boardMatrix") private ArrayList boardMatrix;
	@Column(name="namePlayer1") private String namePlayer1;
	@Column(name="namePlayer2") private String namePlayer2;
	@Column(name="piecesColorPlayer1") private String piecesColorPlayer1;
	@Column(name="piecesColorPlayer2") private String piecesColorPlayer2;
	@Column(name="moveHystoryPlayer1") private ArrayList<String> moveHystoryPlayer1;
	@Column(name="moveHystoryPlayer2") private ArrayList<String> moveHystoryPlayer2;
	
	
	public SaveParams() {
		
	}

	public String getServerName() {
		return serverName;
	}

	public void setServerName(String serverName) {
		this.serverName = serverName;
	}

//	public ArrayList getBoardMatrix() {
//		return boardMatrix;
//	}
//
//	public void setBoardMatrix(ArrayList boardMatrix) {
//		this.boardMatrix = boardMatrix;
//	}

	public String getNamePlayer1() {
		return namePlayer1;
	}

	public void setNamePlayer1(String namePlayer1) {
		this.namePlayer1 = namePlayer1;
	}

	public String getNamePlayer2() {
		return namePlayer2;
	}

	public void setNamePlayer2(String namePlayer2) {
		this.namePlayer2 = namePlayer2;
	}

	public String getPiecesColorPlayer1() {
		return piecesColorPlayer1;
	}

	public void setPiecesColorPlayer1(String piecesColorPlayer1) {
		this.piecesColorPlayer1 = piecesColorPlayer1;
	}

	public String getPiecesColorPlayer2() {
		return piecesColorPlayer2;
	}

	public void setPiecesColorPlayer2(String piecesColorPlayer2) {
		this.piecesColorPlayer2 = piecesColorPlayer2;
	}

	public ArrayList<String> getMoveHystoryPlayer1() {
		return moveHystoryPlayer1;
	}

	public void setMoveHystoryPlayer1(ArrayList<String> moveHystoryPlayer1) {
		this.moveHystoryPlayer1 = moveHystoryPlayer1;
	}

	public ArrayList<String> getMoveHystoryPlayer2() {
		return moveHystoryPlayer2;
	}

	public void setMoveHystoryPlayer2(ArrayList<String> moveHystoryPlayer2) {
		this.moveHystoryPlayer2 = moveHystoryPlayer2;
	}

}



запись в таблице есть, теперь осталось ее извлечь или целым классом или по одному параметру, все-равно.

пробовал вот так
Код: java
1.
SaveParams result = (SaveParams)session.load(SaveParams.class, serverName);

- в итоге ничего не получил, все по нулям.

Если нельзя вытащить отдельный объект, то как вытащить ArrayList и String?

И как можно сохранить объект boardMatrix? В нем 144 значения Integer. Hibernate говорит, что значение сл велико для одной колонки. :(


Спасибо за помощь, и подсказки.!
...
Рейтинг: 0 / 0
13.06.2012, 16:40:28
    #37836625
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не идет Hibernate->SQLQuery, из бд работает???
_webdev_,

1) Слишком сумбурная формулировка вопросов
2) Не видно, где хотя бы один save/persist/update или хотя бы insert
3) Пользуйтесь Criteria
3) Если @id поле у вас ключ, а в таблице по факту ключом не является, то при load вы получите одну из этих записей, неизвестно какую именно, а при сохранении эксепшн о том что обновлена не 1 запись
...
Рейтинг: 0 / 0
19.06.2012, 11:18:02
    #37843870
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не идет Hibernate->SQLQuery, из бд работает???
Первый вариант для получения по условиями
Код: java
1.
2.
3.
4.
	        Session session = sessionFactory.getCurrentSession();
                Criteria criteria = session.createCriteria(SaveParams.class)
                          .add(Restrictions.eq("id", id));
                return (SaveParams) criteria.uniqueResult()


Второй вариант
Код: java
1.
2.
3.
4.
5.
6.
	        Session session = sessionFactory.getCurrentSession();
		SaveParams params = (SaveParams) session
				.createQuery("from SaveParams where id=:id")
				.setLong("id", id)
				.uniqueResult();
		return (SaveParams) criteria.uniqueResult();



Получение всех
Код: java
1.
2.
3.
	        Session session = sessionFactory.getCurrentSession();
                Criteria criteria = session.createCriteria(SaveParams.class);
                return criteria.list()
...
Рейтинг: 0 / 0
19.06.2012, 11:43:18
    #37843921
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не идет Hibernate->SQLQuery, из бд работает???
MrMusculВторой вариант
Код: java
1.
2.
3.
4.
5.
6.
	        Session session = sessionFactory.getCurrentSession();
		SaveParams params = (SaveParams) session
				.createQuery("from SaveParams where id=:id")
				.setLong("id", id)
				.uniqueResult();
		return (SaveParams) criteria.uniqueResult();


С id это шутка или общий подход? Если так, то в качестве обучающего материала проходит. Иначе - очень нехорошая практика: зачем использовать очень дорогой метод createQuery, когда есть get(Class, id)?
...
Рейтинг: 0 / 0
19.06.2012, 11:59:07
    #37843986
MrMuscul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не идет Hibernate->SQLQuery, из бд работает???
IDVsbruckMrMusculВторой вариант
Код: java
1.
2.
3.
4.
5.
6.
	        Session session = sessionFactory.getCurrentSession();
		SaveParams params = (SaveParams) session
				.createQuery("from SaveParams where id=:id")
				.setLong("id", id)
				.uniqueResult();
		return (SaveParams) criteria.uniqueResult();


С id это шутка или общий подход? Если так, то в качестве обучающего материала проходит. Иначе - очень нехорошая практика: зачем использовать очень дорогой метод createQuery, когда есть get(Class, id)?
Условия то разные бывают. CreateQuery вообще лучше избегать. Но если человек просит, почему бы ему не дать ответ на его вопрос.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / не идет Hibernate->SQLQuery, из бд работает??? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]