Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не идет Hibernate->SQLQuery, из бд работает??? 
V
    Опции темы
Killer_13
Дата 11.6.2012, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Решил решить свою проблему грубым способом, но он работает. Заносит записи в бд, но я не могу их прочитать!
Из консоли, все запросы проходят, все выдает, даже ArrayList-ы печатаются, а вот насмотрелся примеров, делаю 1в1, но все-равно не могу извлечь из бд?

Что не так?

Вот запрос,
Код

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


Класс.
Код

@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;
    }

}


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

пробовал вот так 
Код

SaveParams result = (SaveParams)session.load(SaveParams.class, serverName);

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

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

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

Спасибо за помощь, и подсказки.!

PM MAIL   Вверх
Vasay
Дата 11.6.2012, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Killer_13

Какие ошибки выдает Hibernate? Какой SQL код генерит (отладка в настройках Hibernate включена)?

Цитата(Killer_13 @  11.6.2012,  17:07 Найти цитируемый пост)
moveHystory = (List)session.createSQLQuery("select moveHystoryPlayer1 from games where serverName='"+serverName+"'").list();


У Вас класс SaveParams, почему from games ? 

 Параметр хорошо бы добавлять через setParameter().



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  11.6.2012,  21:45 Найти цитируемый пост)
Какие ошибки выдает Hibernate? Какой SQL код генерит (отладка в настройках Hibernate включена)?
 - никаких ошибок, все без ошибок.

Вот конф
Код

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

      <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/chessdb</property>
        <property name="connection.username">root</property>
        <property name="connection.password">killer</property>

      <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

      <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">2</property>

      <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
        
         <property name="hibernate.hbm2ddl.auto">update</property>

      <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

      <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        
        <mapping class="chess.db.SaveParams"/>

    </session-factory>

</hibernate-configuration>




Цитата(Vasay @  11.6.2012,  21:45 Найти цитируемый пост)
У Вас класс SaveParams, почему from games ? 
 - переименовал таблицу в saveparams.

Что в первом случае, что теперь получаю 1 объект с непонятными числами int.
В чем подвох? Спасибо!


PM MAIL   Вверх
Vasay
Дата 12.6.2012, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  11.6.2012,  17:07 Найти цитируемый пост)

@Column(name="moveHystoryPlayer1") private ArrayList<String> moveHystoryPlayer1;    
@Column(name="moveHystoryPlayer2") private ArrayList<String> moveHystoryPlayer2;


Думаю, нужно еще добавить аннотацию @ElementCollection и можно добавить @CollectionTable
http://docs.jboss.org/hibernate/core/3.6/r...ctions-ofvalues



Цитата(Killer_13 @  12.6.2012,  00:22 Найти цитируемый пост)
Что в первом случае, что теперь получаю 1 объект с непонятными числами int.В чем подвох? Спасибо!


Так.  Вы пытаетесь выполнить SQL (а не HQL )  запрос (а почему бы не HQL?). 
Тогда смотрите: http://docs.jboss.org/hibernate/orm/3.3/re...l/querysql.html
В этом случае Hibernate понятия не имеет что Вы там извлекаете с помощью SQL и возвращает List of Object arrays (Object[])

Как я понимаю
Object[] в Вашем случае содержит один элемент (так как Вы запрашиваете только moveHystoryPlayer1).  И, я думаю, это будет одно число - id по которому таблица games связана с таблицей moveHystoryPlayer1 (или как Вы ее там самостоятельно назовете с помощью аннотации @CollectionTable ).  Т.е. я думаю, для извлечения ArrayList<String> Вам нужен еще один запрос.

п.с. юзайте HQL. 



Это сообщение отредактировал(а) Vasay - 12.6.2012, 02:40


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  12.6.2012,  02:37 Найти цитируемый пост)
Думаю, нужно еще добавить аннотацию @ElementCollection и можно добавить @CollectionTable
 - думаете, или нужно? smile



Цитата(Vasay @  12.6.2012,  02:37 Найти цитируемый пост)
Так.  Вы пытаетесь выполнить SQL (а не HQL )  запрос (а почему бы не HQL?). 
Тогда смотрите: http://docs.jboss.org/hibernate/orm/3.3/re...l/querysql.html
В этом случае Hibernate понятия не имеет что Вы там извлекаете с помощью SQL и возвращает List of Object arrays (Object[])
 - ну да sql. ну так зачем тогда этот sql если хибер понятия не имеет? Можно рабочий пример? У всех туториалах пишет именно так! тем более здесь стоит три метода с помощью которых можно извлекать данные. http://habrahabr.ru/post/132385/  почему у меня елементарный вопрос не получается?! :( Тем более Когда пробовал выдрать оттуда обычный string такая же фигня. :(


Цитата(Vasay @  12.6.2012,  02:37 Найти цитируемый пост)
Как я понимаю
Object[] в Вашем случае содержит один элемент (так как Вы запрашиваете только moveHystoryPlayer1).  И, я думаю, это будет одно число - id по которому таблица games связана с таблицей 
 - да, 1 элемент. но в нем до сотни int значений.

Цитата(Vasay @  12.6.2012,  02:37 Найти цитируемый пост)
Т.е. я думаю, для извлечения ArrayList<String> Вам нужен еще один запрос.
 - какой? Бррр, мне кажется все просто для знающих людей. Почему не поделится строчкой кода? :( Это все что в данный момент мне нужно... :(

Спасибо!

PM MAIL   Вверх
Vasay
Дата 12.6.2012, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  12.6.2012,  10:29 Найти цитируемый пост)
- думаете, или нужно?


Вообще нужно. Но если у Вас нет ошибок и записи добавляются в базу - то, возможно, Hibernate сам додумался что у Вас тут коллекция.  И создал дополнительные таблицы ( А создал? )


Цитата(Killer_13 @  12.6.2012,  10:29 Найти цитируемый пост)
 - ну да sql. ну так зачем тогда этот sql если хибер понятия не имеет? 

Потому что применение SQL в Hibernate - это крайний вариант, применяемый, когда нужно использовать специфические для конкретной БД возможности. В Вашем случае он не актуален. Используйте HQL

 
Цитата(Killer_13 @  12.6.2012,  10:29 Найти цитируемый пост)
 - да, 1 элемент. но в нем до сотни int значений.

Тогда не знаю что он Вам там извлекает. 




Цитата(Killer_13 @  12.6.2012,  10:29 Найти цитируемый пост)
 - какой? Бррр, мне кажется все просто для знающих людей. Почему не поделится строчкой кода?


Ну добавьте аннотацию @ElementCollection для коллекций. 
И используйте HQL 

Примерно такой код должен быть:
Код

Query query = session.createQuery("from SaveParams where serverName = :sName ");
query.setParameter("sName", serverName);
List listOfSaveParams = query.list();


Должны получить List SaveParams удовлетворяющих условию по serverName. 

Извлекаете конкретный элемент из List, затем list MoveHystoryPlayer1

ArrayList moveHystoryPlayer1 = ((SaveParams)listOfSaveParams.get( номер элемента )).getMoveHystoryPlayer1() 


п.с. писал на коленке, так что извините, если где что-то не то написал. 

Это сообщение отредактировал(а) Vasay - 12.6.2012, 11:39


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
Вообще нужно. Но если у Вас нет ошибок и записи добавляются в базу - то, возможно, Hibernate сам додумался что у Вас тут коллекция.  И создал дополнительные таблицы ( А создал? )
 - нет. не создал, только одна таблица.

Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
Потому что применение SQL в Hibernate - это крайний вариант, применяемый, когда нужно использовать специфические для конкретной БД возможности. В Вашем случае он не актуален. Используйте HQL
 - понял



Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
Тогда не знаю что он Вам там извлекает. 
 - :(



Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
Должны получить List SaveParams удовлетворяющих условию по serverName. 
 - тоисть должен получится в итоге объект saveparams со всеми полями.?



Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
Извлекаете конкретный элемент из List, затем list MoveHystoryPlayer1

ArrayList moveHystoryPlayer1 = ((SaveParams)listOfSaveParams.get( номер элемента )).getMoveHystoryPlayer1() 
 - предельно ясно, осталось протестировать. Гррр, сейчас жаль не могу. на работе..

Цитата(Vasay @  12.6.2012,  11:33 Найти цитируемый пост)
п.с. писал на коленке, так что извините, если где что-то не то написал. 
 - ну что Вы, очень выручаете. и за это спасибо!

PM MAIL   Вверх
Vasay
Дата 12.6.2012, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  12.6.2012,  11:48 Найти цитируемый пост)
 - нет. не создал, только одна таблица.


Должны быть созданы таблицы для ArrayList-ов.  Они не создались, наверно, потому что не было аннотации @ElementCollection


Цитата(Killer_13 @  12.6.2012,  11:48 Найти цитируемый пост)
- тоисть должен получится в итоге объект saveparams со всеми полями.?

да

up 
Но если будете использовать  lazy loading (по умолчанию включена) то List-ы будут загружаться только при обращении к ним.

Это сообщение отредактировал(а) Vasay - 12.6.2012, 12:16


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  12.6.2012,  12:02 Найти цитируемый пост)
Должны быть созданы таблицы для ArrayList-ов.  Они не создались, наверно, потому что не было аннотации @ElementCollection
 - хммм, странно в MySql консоли ArrayList печатается на ура. Ок, аннотацию добавлю.
 

Цитата(Vasay @  12.6.2012,  12:02 Найти цитируемый пост)
up 
Но если будете использовать  lazy loading (по умолчанию включена) то List-ы будут загружаться только при обращении к ним.
 - да мне хоть как бы. сейчас нету времени ковырять хибер, и так не хочется задавать такие вопросы, ведь к этому самому легко придти, - главное покурить основы... но.. сессия на носу, кроме проекта, много теории учить, так что выковыриваю данные. дописываю загрузку из этих данных и все.


иии, если можно - для меня остался один неясный вопрос..
Цитата

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


Пас.

PM MAIL   Вверх
Vasay
Дата 12.6.2012, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  12.6.2012,  13:10 Найти цитируемый пост)
 - хммм, странно в MySql консоли ArrayList печатается на ура. Ок, аннотацию добавлю.


Как они могут печататься, если для их хранения не создано таблиц?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  12.6.2012,  14:30 Найти цитируемый пост)
Как они могут печататься, если для их хранения не создано таблиц? 
 - нууу, не знаю.. выводит первый элемент -> второй элемент -> третий элемент -> ....

Добавлено через 19 секунд
Конфиг и класс я выложил.
PM MAIL   Вверх
Vasay
Дата 12.6.2012, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  12.6.2012,  14:35 Найти цитируемый пост)
 - нууу, не знаю.. выводит первый элемент -> второй элемент -> третий элемент -> ....



А что у Вас в БД? Если таблица только одна, то, наверно, там просто дублируются записи для каждого значения в коллекции.

Добавлено @ 14:49
Цитата(Killer_13 @  12.6.2012,  13:10 Найти цитируемый пост)
И как можно сохранить объект boardMatrix? В нем 144 значения Integer. Hibernate говорит, что значение сл велико для одной колонки. :(


Что из себя представляет boardMatrix ? Двумерный массив 12х12 ?

Это сообщение отредактировал(а) Vasay - 12.6.2012, 14:50


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  12.6.2012,  14:47 Найти цитируемый пост)
А что у Вас в БД? Если таблица только одна, то, наверно, там просто дублируются записи для каждого значения в коллекции.
 - ничего, только это, я травлю хибер на пустую базу и он мне создает эту таблицу.



Цитата(Vasay @  12.6.2012,  14:47 Найти цитируемый пост)
Что из себя представляет boardMatrix ? Двумерный массив 12х12 ?
 - да. мене посоветовали кастовать в строку, и заганять в базу как строку. Делал как строку. но в итоге лажа получается, так как разные числа, и плюс и минус и нули и так д... Поэтому запихнул все в ArrayList.

PM MAIL   Вверх
Vasay
Дата 12.6.2012, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  12.6.2012,  14:58 Найти цитируемый пост)
 - ничего, только это, я травлю хибер на пустую базу и он мне создает эту таблицу.


Так что туда записывается? Как записывается Ваши ArrayList-ы, что Вы потом их извлекаете (то что таблица только одна - это не правильно). 


Цитата(Killer_13 @  12.6.2012,  14:58 Найти цитируемый пост)
- да. мене посоветовали кастовать в строку, и заганять в базу как строку. Делал как строку. но в итоге лажа получается, так как разные числа, и плюс и минус и нули и так д... Поэтому запихнул все в ArrayList.


как строку - не надо. ArrayList, пожалуй, правильно.  Не записывается, наверно, потому что не правильно что-то сконфигурировали.  Покажите код. 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Vasay - вечерком закину. Спасибо.
PM MAIL   Вверх
Killer_13
Дата 12.6.2012, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



итак! Еще раз и по порядку.
Вот так вот создается объект.

Код

SaveParams saveParams = new SaveParams();
saveParams.setServerName(this.chessClient.getServerName());
// saveParams.setBoardMatrix(chessModel.matrixToArrayList());
saveParams.setNamePlayer1(this.chessModel.getPlayer1().getName());
saveParams.setNamePlayer2(this.chessModel.getPlayer2().getName());
saveParams.setPiecesColorPlayer1(this.chessModel.getPlayer1().getPiecesColor());
saveParams.setPiecesColorPlayer2(this.chessModel.getPlayer2().getPiecesColor());
saveParams.setMoveHystoryPlayer1(this.chessModel.getPlayer1().getMoveHystory());
saveParams.setMoveHystoryPlayer2(this.chessModel.getPlayer2().getMoveHystory());

ChessDao chessDao = new ChessDao();
chessDao.saveGame(saveParams);


Вот функция saveGame
Код

public void saveGame(SaveParams saveParams) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.save(saveParams);
        session.getTransaction().commit();
    }


Вот класс который хочу сохранить.
Код

@Entity
@Table(name="SaveParams")
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;
    @ElementCollection
    @CollectionTable(name="moveHystoryPlayer11",joinColumns=@JoinColumn(name="serverName"))
    @Column(name="moveHystoryPlayer1") 
    private ArrayList<String> moveHystoryPlayer1;
    @ElementCollection
    @CollectionTable(name="moveHystoryPlayer22",joinColumns=@JoinColumn(name="serverName"))
    @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;
    }

}


При первом сохранении база пустая, конф файл есть в одном из первых постов.
сейчас валится ошибка при сохранении, уже хочет устанавливать связи. Нужно, не нужно?

Код

22:07:31,614  INFO Version:37 - Hibernate Commons Annotations 3.2.0.Final
22:07:31,623  INFO Environment:603 - Hibernate 3.6.10.Final
22:07:31,625  INFO Environment:636 - hibernate.properties not found
22:07:31,628  INFO Environment:814 - Bytecode provider name : javassist
22:07:31,630  INFO Environment:695 - using JDK 1.4 java.sql.Timestamp handling
22:07:31,676 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [uuid2] -> [class org.hibernate.id.UUIDGenerator]
22:07:31,677 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [guid] -> [class org.hibernate.id.GUIDGenerator]
22:07:31,679 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [uuid] -> [class org.hibernate.id.UUIDHexGenerator]
22:07:31,679 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [uuid.hex] -> [class org.hibernate.id.UUIDHexGenerator]
22:07:31,681 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [hilo] -> [class org.hibernate.id.TableHiLoGenerator]
22:07:31,682 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [assigned] -> [class org.hibernate.id.Assigned]
22:07:31,684 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [identity] -> [class org.hibernate.id.IdentityGenerator]
22:07:31,685 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [select] -> [class org.hibernate.id.SelectGenerator]
22:07:31,685 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [sequence] -> [class org.hibernate.id.SequenceGenerator]
22:07:31,686 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [seqhilo] -> [class org.hibernate.id.SequenceHiLoGenerator]
22:07:31,687 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [increment] -> [class org.hibernate.id.IncrementGenerator]
22:07:31,688 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [foreign] -> [class org.hibernate.id.ForeignGenerator]
22:07:31,689 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [sequence-identity] -> [class org.hibernate.id.SequenceIdentityGenerator]
22:07:31,690 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [enhanced-sequence] -> [class org.hibernate.id.enhanced.SequenceStyleGenerator]
22:07:31,691 DEBUG DefaultIdentifierGeneratorFactory:100 - Registering IdentifierGenerator strategy [enhanced-table] -> [class org.hibernate.id.enhanced.TableGenerator]
22:07:31,693  INFO Configuration:2156 - configuring from resource: /hibernate.cfg.xml
22:07:31,693  INFO Configuration:2175 - Configuration resource: /hibernate.cfg.xml
22:07:31,744 DEBUG DTDEntityResolver:67 - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd]
22:07:31,745  WARN DTDEntityResolver:73 - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
22:07:31,745 DEBUG DTDEntityResolver:77 - attempting to resolve on classpath under org/hibernate/
22:07:31,748 DEBUG DTDEntityResolver:109 - located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath
22:07:31,776 DEBUG Configuration:2118 - connection.driver_class=com.mysql.jdbc.Driver
22:07:31,777 DEBUG Configuration:2118 - connection.url=jdbc:mysql://127.0.0.1:3306/chessdb
22:07:31,777 DEBUG Configuration:2118 - connection.username=root
22:07:31,777 DEBUG Configuration:2118 - connection.password=killer
22:07:31,778 DEBUG Configuration:2118 - dialect=org.hibernate.dialect.MySQLInnoDBDialect
22:07:31,778 DEBUG Configuration:2118 - connection.pool_size=2
22:07:31,779 DEBUG Configuration:2118 - current_session_context_class=thread
22:07:31,779 DEBUG Configuration:2118 - hibernate.hbm2ddl.auto=update
22:07:31,779 DEBUG Configuration:2118 - cache.provider_class=org.hibernate.cache.NoCacheProvider
22:07:31,780 DEBUG Configuration:2118 - show_sql=true
22:07:31,780 DEBUG Configuration:2363 - session-factory config [null] named class [chess.db.SaveParams] for mapping
22:07:31,788  INFO Configuration:2297 - Configured SessionFactory: null
22:07:31,788 DEBUG Configuration:2298 - properties: {show_sql=true, java.vendor=Sun Microsystems Inc., sun.java.launcher=SUN_STANDARD, hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/chessdb, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.name=Windows 7, sun.boot.class.path=C:\Program Files\Java\jdk1.6.0_31\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_31\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_31\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_31\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_31\jre\lib\charsets.jar;C:\Program Files\Java\apache-tomcat-7.0.23-windows-x64\lib\servlet-api.jar, hibernate.current_session_context_class=thread, sun.desktop=windows, java.vm.specification.vendor=Sun Microsystems Inc., java.runtime.version=1.6.0_31-b05, hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider, user.name=JDev, connection.driver_class=com.mysql.jdbc.Driver, current_session_context_class=thread, user.language=ru, sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_31\jre\bin, dialect=org.hibernate.dialect.MySQLInnoDBDialect, java.version=1.6.0_31, user.timezone=Europe/Berlin, sun.arch.data.model=64, java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_31\jre\lib\endorsed, sun.cpu.isalist=amd64, sun.jnu.encoding=Cp1251, file.encoding.pkg=sun.io, file.separator=\, java.specification.name=Java Platform API Specification, java.class.version=50.0, user.country=RU, connection.url=jdbc:mysql://127.0.0.1:3306/chessdb, java.home=C:\Program Files\Java\jdk1.6.0_31\jre, java.vm.info=mixed mode, os.version=6.1, path.separator=;, connection.password=killer, java.vm.version=20.6-b01, hibernate.connection.password=killer, user.variant=, java.awt.printerjob=sun.awt.windows.WPrinterJob, sun.io.unicode.encoding=UnicodeLittle, awt.toolkit=sun.awt.windows.WToolkit, hibernate.connection.username=root, user.home=C:\Users\JDev, java.specification.vendor=Sun Microsystems Inc., hibernate.hbm2ddl.auto=update, java.library.path=C:\Program Files\Java\jdk1.6.0_31\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Services\IPT\;C:\Program Files\PostgreSQL\9.1\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\MinGW\bin;C:\MinGw\msys\1.0\bin;C:\Program Files\Java\apache-maven-3.0.3\bin;C:\Program Files\Java\jdk1.6.0_31;C:\Program Files\Python27;;., java.vendor.url=http://java.sun.com/, hibernate.connection.driver_class=com.mysql.jdbc.Driver, connection.username=root, java.vm.vendor=Sun Microsystems Inc., hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect, java.runtime.name=Java(TM) SE Runtime Environment, sun.java.command=chess.main.Main, java.class.path=E:\Projects\Chess\Chess\bin;E:\Projects\Chess\Chess\lib\mysql-connector-java-3.1.14-bin.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\hibernate3.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\antlr-2.7.6.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\commons-collections-3.1.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\dom4j-1.6.1.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\javassist-3.12.0.GA.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\jta-1.1.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\required\slf4j-api-1.6.1.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\bytecode\cglib\cglib-2.2.jar;C:\Program Files\Java\hibernate-annotations-3.4.0.GA\hibernate-annotations.jar;C:\Program Files\Java\hibernate-annotations-3.4.0.GA\lib\ejb3-persistence.jar;C:\Program Files\Java\hibernate-annotations-3.4.0.GA\lib\hibernate-commons-annotations.jar;C:\Program Files\Java\hibernate-annotations-3.4.0.GA\lib\test\log4j.jar;C:\Program Files\Java\slf4j-1.6.5\slf4j-log4j12-1.6.5.jar;C:\Program Files\Java\hibernate-distribution-3.6.10.Final\lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final.jar;C:\Program Files\Java\hLib\mysqlJDBC-3.1.13.jar.txt;C:\Program Files\Java\hLib\javaee.jar.txt;C:\Program Files\Java\hLib\log4j-1.2.15.jar.txt, hibernate.bytecode.use_reflection_optimizer=false, java.vm.specification.name=Java Virtual Machine Specification, java.vm.specification.version=1.0, sun.cpu.endian=little, sun.os.patch.level=Service Pack 1, connection.pool_size=2, java.io.tmpdir=C:\Users\JDev\AppData\Local\Temp\, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, os.arch=amd64, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.ext.dirs=C:\Program Files\Java\jdk1.6.0_31\jre\lib\ext;C:\Windows\Sun\Java\lib\ext, user.dir=E:\Projects\Chess\Chess, line.separator=
, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, cache.provider_class=org.hibernate.cache.NoCacheProvider, file.encoding=Cp1251, java.specification.version=1.6, hibernate.show_sql=true, hibernate.connection.pool_size=2}
22:07:31,790 DEBUG Configuration:1854 - Preparing to build session factory with filters : {}
22:07:31,836 DEBUG Configuration:3995 - Processing hbm.xml files
22:07:31,836 DEBUG Configuration:4025 - Process annotated classes
22:07:31,841  INFO AnnotationBinder:532 - Binding entity from annotated class: chess.db.SaveParams
22:07:31,867 DEBUG Ejb3Column:192 - Binding column: Ejb3DiscriminatorColumn{logicalColumnName'DTYPE', discriminatorTypeName='string'}
22:07:31,870 DEBUG AnnotationBinder:1019 - no value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED
22:07:31,877 DEBUG EntityBinder:364 - Import with entity name SaveParams
22:07:31,881  INFO EntityBinder:530 - Bind entity chess.db.SaveParams on table SaveParams
22:07:31,928 DEBUG Ejb3Column:192 - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(SaveParams), mappingColumn=serverName, insertable=true, updatable=true, unique=false}
22:07:31,936 DEBUG PropertyBinder:175 - binding property serverName with lazy=false
22:07:31,938 DEBUG SimpleValueBinder:303 - building SimpleValue for serverName
22:07:31,940 DEBUG PropertyBinder:255 - Building property serverName
22:07:31,946 DEBUG Ejb3Column:192 - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(SaveParams), mappingColumn=moveHystoryPlayer1, insertable=true, updatable=true, unique=false}
22:07:31,948 DEBUG Ejb3Column:192 - Binding column: Ejb3JoinColumn{logicalColumnName='null', referencedColumn='null', mappedBy=''}
22:07:31,950 DEBUG Ejb3Column:192 - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(SaveParams), mappingColumn=null, insertable=true, updatable=true, unique=false}
Initial SessionFactory creation failed.org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: chess.db.SaveParams.moveHystoryPlayer1
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at chess.db.HibernateUtil.<clinit>(HibernateUtil.java:18)
    at chess.dao.ChessDao.saveGame(ChessDao.java:19)
    at chess.network.ChessGUINetwork_Controller.actionPerformed(ChessGUINetwork_Controller.java:59)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6290)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6055)
    at java.awt.Container.processEvent(Container.java:2039)
    at java.awt.Component.dispatchEventImpl(Component.java:4653)
    at java.awt.Container.dispatchEventImpl(Container.java:2097)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
    at java.awt.Container.dispatchEventImpl(Container.java:2083)
    at java.awt.Window.dispatchEventImpl(Window.java:2482)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:607)
    at java.awt.EventQueue$1.run(EventQueue.java:605)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:621)
    at java.awt.EventQueue$2.run(EventQueue.java:619)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: chess.db.SaveParams.moveHystoryPlayer1
    at org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:324)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1723)
    at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4035)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3989)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1398)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
    at chess.db.HibernateUtil.<clinit>(HibernateUtil.java:14)
    ... 38 more


Вот и все.

Очень надеюсь на вашу помощь!!!

PM MAIL   Вверх
Vasay
Дата 13.6.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Killer_13

Насчет ошибки - в классе SaveParams замените ArrayList на List


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 13.6.2012, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Vasay - Спасибо!!! Вы гений, и просто хороший человек!!!
Все работает и таблички такие аккуратные в консоли выдает, и из явы тянет, все как и должно быть!!!

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1428 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.