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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate и MySql, Ошибка!!! 
V
    Опции темы
fisherman
Дата 6.3.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста!!!
Не могу разобраться в чем ошибка?

В базе данных есть 2 сущности: пользователь и корабли.
Пользователь:
id
login
password
Корабли:
id
name
typename
manufacturer
owner_id

hibernate.cfg.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="hibernate.connection.password">fisherhunter</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/shop</property>
        <property name="hibernate.connection.username">fisher</property>
        <property name="show_sql">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <mapping resource="starship.hbm.xml"/>
        <mapping resource="user.hbm.xml"/>
    </session-factory>
</hibernate-configuration>


starship.hbm.xml
Код

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

  <class name="Starship" table="starship">
  <id name="id" column="id" type="java.lang.Integer">
  <generator class="increment"></generator>
  </id>
  <property name="name" type="java.lang.String"></property>
  <property name="typeName" type="java.lang.String"></property>
  <property name="manufacturer" type="java.lang.String"></property>
  <property name="owner_id" type="java.lang.Integer"></property>
  
  </class>
</hibernate-mapping>


user.hbm.xml
Код

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

  <class name="User" table="user">
  
  <id name="id" column="id" type="java.lang.Integer">
  <generator class="native"></generator>
  </id>
  
  <property name="login" type="java.lang.String"></property>
  <property name="password" type="java.lang.String"></property>
  
  <set name="relations" table="starship" cascade="all">
  <key column="owner_id"></key>
  <one-to-many class="User"/>
  </set>
  
  </class>
</hibernate-mapping>


test.java
Код

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.Configuration;
public class Test {
    
    public static void main(String[] args) throws Exception {

        User p = new User();
        p.setId(4);
        p.setLogin("artur");
        p.setPassword("qwe");

        Configuration cfg = new Configuration().addClass(User.class);
        SessionFactory sf = cfg.buildSessionFactory();

        Session sess = sf.openSession();

        Transaction t = sess.beginTransaction();
        sess.save(p);
        t.commit();
        sess.close();
        }
    }


При компиляции выводит:

Цитата

Activation.main: warning: sun.rmi.activation.execPolicy system
property unspecified and no ExecPermissions/ExecOptionPermissions
granted; subsequent activation attempts may fail due to unsuccessful
ExecPermission/ExecOptionPermission permission checks.  For
documentation on how to configure rmid security, refer to:

http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html
http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html

Activation.main: an exception occurred: Port already in use: 1098; nested exception is: 
    java.net.BindException: Address already in use: JVM_Bind
java.rmi.server.ExportException: Port already in use: 1098; nested exception is: 
    java.net.BindException: Address already in use: JVM_Bind
    at sun.rmi.transport.tcp.TCPTransport.listen(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
    at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
    at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
    at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
    at sun.rmi.registry.RegistryImpl.setup(Unknown Source)
    at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
    at java.rmi.registry.LocateRegistry.createRegistry(Unknown Source)
    at sun.rmi.server.Activation.main(Unknown Source)
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(Unknown Source)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(Unknown Source)
    at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source)
    ... 9 more


В чем ошибка?


Это сообщение отредактировал(а) powerOn - 6.3.2008, 21:20
PM MAIL   Вверх
force
Дата 6.3.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Во-первых, во время компиляции такого быть не может. Это уже во время запуска вылетает exception.
Судя по исключению, порт просто банально занят каким-то другим приложением. Можно просто в настройках сервера вместо 1098 попробовать другой порт прописать.
PM MAIL   Вверх
fisherman
Дата 6.3.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Но у меня вроде порта 1098 в настройках ни где и нет???

Добавлено через 1 минуту и 43 секунды
И я что-то не могу понять почему Exception rmi???
PM MAIL   Вверх
greef
Дата 7.3.2008, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http://forum.java.sun.com/thread.jspa?threadID=5044757
http://www.artima.com/forums/flat.jsp?foru...amp;thread=2663

А вообще, в решении таких проблем лучший помощник - google
PM MAIL   Вверх
anglerhood
Дата 8.3.2008, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если работаешь в win 
1) набери в консоли 
Код

netstat -ab > who_took_my_port_wtf.txt
 
2) открой файлик who_took_my_port_wtf.txt и найди приложение, которое использует порт 1098
3) закрой это приложение.

Если ты работаешь в *nix, то и сам разберёшься.

Это сообщение отредактировал(а) anglerhood - 8.3.2008, 04:08
PM MAIL ICQ   Вверх
fisherman
Дата 8.3.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я посмотрел, у меня порт 1098 занят javaw.exe
Как я понял это виртуальная машина...???
Что делать не знаю...
Подскажите пожалуйста!!!
PM MAIL   Вверх
fisherman
Дата 8.3.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С портом вроде разобрался, но при запуске все равно выскакивает:
Код

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
    at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
    at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
    at Test.main(Test.java:14)

Помогите пожалуйста!
PM MAIL   Вверх
check
Дата 9.3.2008, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 23



Цитата(fisherman @  6.3.2008,  20:55 Найти цитируемый пост)
Configuration cfg = new Configuration().addClass(User.class);
А если эту строку заменить на 
Код

Configuration cfg = new Configuration().configure("hibernate.cfg.xml");



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


Новичок



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

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



Заменил на:
Код

Configuration cfg = new Configuration().configure("hibernate.cfg.xml");

Сейчас выскакивает:
Код

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find a getter for relations in class User
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
    at org.hibernate.mapping.Property.getGetter(Property.java:272)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:302)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
    at Test.main(Test.java:15)

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


AA - Aussie Animal
****


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

Репутация: 14
Всего: 104



Цитата(fisherman @  9.3.2008,  10:44 Найти цитируемый пост)
Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find a getter for relations in class User

Вывод: в классе User добавь геттер/сеттеры для поля relations.


--------------------
Lost....
PM MAIL MSN   Вверх
fisherman
Дата 9.3.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Но get b set у меня есть:
User.java
Код

import java.util.Set;
public class User {
    private Integer id;
    private String login;
    private String password;
    private Set starship;
    
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id=id;
    }
    
    public String getLogin() {
        return login;
    }
    
    public void setLogin(String login) {
        this.login=login;
    }
    
    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password=password;
    }
    
    public Set getStarship() {
        return starship;
    }
    
    public void setStarship(Set starship) {
        this.starship=starship;
    }

}

Starship.java
Код

public class Starship {
    private Integer id;
    private String name;
    private String typeName;
    private String manufacturer;
    private Integer owner_id;
    
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id=id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name=name;
    }
    
    public String getTypeName() {
        return typeName;
    }
    
    public void setTypeName(String typeName) {
        this.typeName=typeName;
    }
    
    public String getManufacturer() {
        return manufacturer;
    }
    
    public void setManufacturer(String manufacturer) {
        this.manufacturer=manufacturer;
    }
    
    public Integer getOwner_Id() {
        return owner_id;
    }
    
    public void setOwner_Id(Integer owner_id) {
        this.owner_id=owner_id;
    }

}


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


AA - Aussie Animal
****


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

Репутация: 14
Всего: 104



fisherman, в маппинге ты задал имя relations, его и нужно использовать в классе, а не starship


--------------------
Lost....
PM MAIL MSN   Вверх
check
Дата 9.3.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 23



И one-to-many класс будет Starship, а не User, как я понял
Код

  <set name="relations" table="starship" cascade="all">
  <key column="owner_id"/>
  <one-to-many class="Starship"/>
  </set>


Это сообщение отредактировал(а) check - 9.3.2008, 12:57
PM MAIL   Вверх
fisherman
Дата 9.3.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Удалил 
Код

<set name="relations" table="starship" cascade="all">
  <key column="owner_id"/>
  <one-to-many class="User"/>
  </set>

из User.hbm.xml

а Starship.hbm.xml дописал:
Код

<many-to-one name="owner_id" column="owner_id" class="User"></many-to-one>


Уже выскакивает:
Код

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find a getter for owner_id in class Starship
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
    at org.hibernate.mapping.Property.getGetter(Property.java:272)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:302)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
    at Test.main(Test.java:13)


Как я понял ругается, будто нет геттера для owner_id в классе Starship, хотя он там прописан...
????????????
PM MAIL   Вверх
Kangaroo
Дата 9.3.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

Репутация: 14
Всего: 104



У тебя:
Код

public Integer getOwner_Id() {
        return owner_id;
    }
    
    public void setOwner_Id(Integer owner_id) {
        this.owner_id=owner_id;
    }


Нужно:
Код

public Integer getOwner_id() {
        return owner_id;
    }
    
    public void setOwner_id(Integer owner_id) {
        this.owner_id=owner_id;
    }


Если ты юзаешь IDE, то там должна быть функция авто генерирования геттеров/сеттеров


--------------------
Lost....
PM MAIL MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0929 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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