powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, hsqldb
6 сообщений из 6, страница 1 из 1
Hibernate, hsqldb
    #37949569
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. При попытке вставки в табличку, возникает ошибка:
Hibernate: insert into DATA_USER (ID, NAME, SURNAME, PATRONYMIC) values (null, ?, ?, ?)
Error "addUser". Exception: could not insert: [hibernate.User]
В чем может быть ошибка? Спасибо!
Вызов:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
try 
{
	UserAccess.addUser(new User());
} 
catch (SQLException e) 
{
	e.printStackTrace();
}


class UserAccess:

Код: 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.
package hibernate;

import java.sql.SQLException;
import org.hibernate.Session;

public class UserAccess 
{
	public static void addUser(User user) throws SQLException 
	{
		Session session = null;
		try 
		{
			System.out.println("1");
			session = HibernateUtil.getSessionFactory().openSession();
			System.out.println("2");
			session.beginTransaction();
			System.out.println("3");
			System.out.println("id = " + session.save(user));
			System.out.println("4");
			session.getTransaction().commit();
			System.out.println("5");
		} 
		catch (Exception e) 
		{
			System.out.println("Error \"addUser\". Exception: " + e.getMessage());
		} 
		finally 
		{
			if (session != null && session.isOpen()) 
				session.close();
		}
	}
	
	public static User getUserById(Long id) throws SQLException 
	{
		Session session = null;
		User user = null;
		try 
		{
			System.out.println("1");
			session = HibernateUtil.getSessionFactory().openSession();
			System.out.println("2");
			user = (User)session.load(User.class, id);
			System.out.println("3" + user.getName());
		} 
		catch (Exception e) 
		{
			System.out.println("Error \"getUserById\". Exception: " + e.getMessage());
		} 
		finally 
		{
			if (session != null && session.isOpen()) 
				session.close();
		}
		return user;
	}

}



class HibernateUtil:

Код: 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.
package hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;

public class HibernateUtil 
{
	private static final SessionFactory sessionFactory;
	static 
	{
		try 
		{
			sessionFactory = new Configuration().configure().buildSessionFactory();
		} 
		catch (Throwable ex) 
		{
			System.err.println("Initial SessionFactory creation failed." + ex);
			throw new ExceptionInInitializerError(ex);
		}
	}
    public static SessionFactory getSessionFactory() 
    {
      return sessionFactory;
    }
}



class User:

Код: 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.
package hibernate;

public class User 
{
	private long id;
	private String name;
	private String surname;
	private String patronymic;
	
	public User(){}
	public User(long id, String name, String surname, String patronymic)
	{
		this.id = id;
		this.name = name;
		this.surname = surname;
		this.patronymic = patronymic;
	}	
	public void setId(long id)
	{
		this.id = id;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public void setSurname(String surname)
	{
		this.surname = surname;
	}
	public void setPatronymic(String patronymic)
	{
		this.patronymic = patronymic;
	}
	
	public long getId()
	{
		return this.id;
	}
	public String getName()
	{
		return this.name;
	}
	public String getSurname()
	{
		return this.surname;
	}
	public String getPatronymic()
	{
		return this.patronymic;
	}
}



User.hbm.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?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="hibernate.User" table="DATA_USER">
		<id column="ID" name="id" type="java.lang.Long">
			<generator class="native"/>
		</id>
		<property column="NAME" name="name" type="java.lang.String"/>
		<property column="SURNAME" name="surname" type="java.lang.String"/>
		<property column="PATRONYMIC" name="patronymic" type="java.lang.String"/>
	</class>
</hibernate-mapping>



Скрипт создания таблички:
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table DATA_USER
(
  ID integer,
  NAME varchar(64),
  SURNAME varchar(64),
  PATRONYMIC varchar(64)
);
...
Рейтинг: 0 / 0
Hibernate, hsqldb
    #37949593
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) <generator class="native"/> обозначает некоторый автоинкремент колонки на уровне БД:
http://stackoverflow.com/questions/491777/auto-incrementing-id-value
У вас колонка обычная.

2) Странно что в инсерте вставляется id=null. Для id стоило бы использовать тип Long, как у вас прописано в маппинге, а не примитив long. Тогда можно нормально отличить не сохраненную сущность по null значению ID.

3)
Если бы вы вместо
System.out.println("Error \"addUser\". Exception: " + e.getMessage());
использовали бы нормальный e.printStackTrace(); (а в будущем, надеюсь, логгер)
То вы бы видели более полный текст ошибки, включая конкретику от сервера о том почему он не вставил запись.
...
Рейтинг: 0 / 0
Hibernate, hsqldb
    #37949608
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, Спасибо! e.printStackTrace() вернул:
Caused by: java.sql.SQLException: Table not found in statement [insert into DATA_USER (NAME, SURNAME, PATRONYMIC, ID) values (?, ?, ?, ?)]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)

Хотя табличка существует, попробовал явно указать схему PUBLIC. Хоть как ругается.
...
Рейтинг: 0 / 0
Hibernate, hsqldb
    #37949610
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызываю ручками этот запрос, подставляя вместо ? значения соответственно - инсерт отрабатывает.
...
Рейтинг: 0 / 0
Hibernate, hsqldb
    #37949628
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HSQL DB запущена в режиме server? Возможно таблицы которые вы создали руками существуют в каком-то другом контексте, не в том в котором работает приложение.
...
Рейтинг: 0 / 0
Hibernate, hsqldb
    #37949714
ukku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, да, спасибо за наводку. Не посмотрел, что эта СУБД "отличается" от других более привычных.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, hsqldb
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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