powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / org.hibernate.MappingException: Java Hibernate
14 сообщений из 64, страница 3 из 3
org.hibernate.MappingException: Java Hibernate
    #38737282
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Geronemo,
Код: java
1.
GenerationType.IDENTITY


только непонятно, почему у тебя JPA а не аннотации хибера

Потому что я пока только учусь (c) Я был программером, потом на некоторое время ушел в другую отрасль, показалось тогда сильно перспективнее. Но вся перспектива там закончилась и я хочу вернуться.
Я ищу работу и мне данное задание дали как тестовое. Потом на вакантное место взяли какого-то студента за копейки и я стал продолжать его делать и наворачивать по своему усмотрению. Когда гуглил Hiberbate, мне подобная реализация попала на глаза раньше, чем с аннотациями. Поэтому я решил делать именно так.

Кстати, IDENTITY работает, Спасибо.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750553
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В моем новом проекте я решил использовать ORM с помощью аннотаций, а не xml файлов

Вылетает вот такая ошибка org.hibernate.TypeMismatchException: Provided id of the wrong type for class DB.UserInfo. Expected: class java.lang.Integer, got class java.lang.String
я уже перебрал несколько различных аннотаций к id, но все одно и то же

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Entity
@Table(name="Users")
public class UserInfo
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="firstName")
    private String firstName;

    @Column(name="lastName")
    private String lastName;

    @Column(name="login")
    private String login;

    @Column(name="userPassword")
    private String Password;
......
}



В базе MySQL таблица выглядит так
Код: sql
1.
create table Users (id int(10) auto_increment,  firstName varchar(20),  lastName varchar(20), login varchar(15), userPassword varchar(15), primary key (id));
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750562
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно почему в ошибке вылез String. Где-то вы нас обманываете.
Для id рекомендуется использовать тип обертку (Long, Integer), чтобы ORM мог отличить новые объекты (id == null) от уже сохраненных.
Если остро нужен примитив, то можно попробовать указать unsaved-value. Не знаю позволяют ли это аннотации.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750622
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНе понятно почему в ошибке вылез String. Где-то вы нас обманываете.
Для id рекомендуется использовать тип обертку (Long, Integer), чтобы ORM мог отличить новые объекты (id == null) от уже сохраненных.
Если остро нужен примитив, то можно попробовать указать unsaved-value. Не знаю позволяют ли это аннотации.

Да, ошибка не тут. Потому каак стало вылетать вот такое
org.hibernate.hql.internal.ast.QuerySyntaxException: Users is not mapped [from Users where login = : login]

когда я подправил запросик
Код: java
1.
2.
3.
4.
5.
            session = HibernateUtil.getSessionFactory().openSession();
            Query query = session.createQuery("from Users where login = : login");
            query.setParameter("login", login);
            users = (List<UserInfo>)query.list();
            user = users.get(0);



В Hibernate.cfg.xml вот такая строчка
<mapping class="DB.UserInfo" />
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750650
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В запросе должно быть название сущности. Users это всего лишь таблица для мапинга её.
Код: java
1.
            Query query = session.createQuery("from UserInfo where login = : login");
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750655
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, уже раз пятый пишу
Users - имя таблицы
UserInfo - имя сущности
HQL, JPQL, Criteria API оперируют сущностями и свойствами
SQL оперирует таблицами и колонками
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750659
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoДа, ошибка не тут. Потому каак стало вылетать вот такое
org.hibernate.hql.internal.ast.QuerySyntaxException: Users is not mapped [from Users where login = : login]

Вам с Елдосом дружить надо. Он тоже сначала на форуме спрашивает, а потом пишет что его ответ не интересует так как ошибка в другом.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38750668
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин, столько времени впустую потратил. Спасибо.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38752143
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, я опять запутался. Нид хелп.

есть сущность
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Entity
@Table(name="writer")
public class WriterInfo
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="firstName")
    private String firstName;

    @Column(name="lastName")
    private String lastName;

    @Column(name="fullName")
    private String fullName;

    @Column(name="info")
    private String info;
...
}



и вот такая попытка достать всех авторов, удовлетворяющих требованиям. Получаю 0 авторов, хотя я делаю копипаст всех параметров и автор точно должен быть 1.

Код: 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.
    public List<WriterInfo> getWriters(String firstName, String lastName, String fullName) throws SQLException
    {
        Session session = null;
        List<WriterInfo> writers = null;

        try {
            session = HibernateUtil.getSessionFactory().openSession();

            Logger.getLogger().write(firstName+lastName+fullName);

            WriterInfo writer = new WriterInfo();

            if (fullName != null && fullName.length() > 0)
                writer.setFullName(fullName);

            if (firstName != null && firstName.length() > 0)
                writer.setFirstName(firstName);

            if (lastName != null && lastName.length() > 0)
                writer.setLastName(lastName);

            Example example = Example.create(writer).enableLike().excludeProperty();


            writers = session.createCriteria(WriterInfo.class).add(example).list();

            Logger.getLogger().write(writers.size()+"");

        } catch (Exception e) {
            Logger.getLogger().write("5555");


        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
        return writers;
    }



также попытался переделать немного по-другому и вылетает исключение
org.hibernate.QueryParameterException: could not locate named parameter [firstName]

Код: 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.
    public List<WriterInfo> getWriters(String firstName, String lastName, String fullName) throws SQLException
    {
        Session session = null;
        List<WriterInfo> writers = null;

        try {
            session = HibernateUtil.getSessionFactory().openSession();

            WriterInfo writer = new WriterInfo();

            if (fullName != null && fullName.length() > 0)
                writer.setFullName(fullName);

            if (firstName != null && firstName.length() > 0)
                writer.setFirstName(firstName);

            if (lastName != null && lastName.length() > 0)
                writer.setLastName(lastName);

            writers = session.createSQLQuery("select * from WriterInfo").setParameter("firstName", writer.getFirstName()).
                    setParameter("lastName", writer.getLastName()).setParameter("fullName", writer.getFullName()).list();

            Logger.getLogger().write(writers.size()+"");

        } catch (Exception e) {
            Logger.getLogger().write("5555");


        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
        return writers;
    }



В будущем мне тут надо бы еще как-то сделать так, чтобы можно было искать авторов по 1 или 2-м полям, а также по частичным совпадениям
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38752150
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такое работает

Код: java
1.
2.
            writers = session.createQuery("from WriterInfo where firstName Like :firstName and lastName like :lastName and fullName like :fullName").
                    setParameter("firstName", writer.getFirstName()).setParameter("lastName", writer.getLastName()).setParameter("fullName", writer.getFullName()).list();



теперь надо бы придумать так, чтобы

GeronemoВ будущем мне тут надо бы еще как-то сделать так, чтобы можно было искать авторов по 1 или 2-м полям, а также по частичным совпадениям
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38752342
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo, сам себя цитируешь? Признак гения наверное...

Чтобы искать по 1-2 м полям нужно написать 1-2 текста предложеня "WHERE ".
Как написать это уже другой вопрос я так ду.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38753002
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшая проблемка нарисовалась.

Есть вот такая сущность

@Entity
@Table(name="Book")
public class BookInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="authorId")
private int authorId;

@Column(name="bookName")
private String bookName;

@Column(name="numberOfBooks")
private int numberOfBooks;

@Column(name="currentNumberOfBooks")
private int currentNumberOfBooks;

Setters and Getters

XXXXXXXXXXXXXX

}

У каждой книги есть автор и мне было бы очень удобно вместо XXXXXXXX вставить объект класса автор (когда я решу, что у книги может быть несколько авторов, я поменяю этот на List).

Проблема в том, что, когда у меня прописан объект XXXXXXX, то вылетает исключение org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Если XXXXXX удалить, то все нормально работает. Но, тогда мне где-то в другом месте надо довольно сильно нагромоздить кода и несколько лишних раз слазить в БД. Я бы хотел данные об авторе хранить здесь, это было бы самым элегантным решением. Вопрос, возможно ли это. Может существует какая-то аннотация, которая новому объекту в этом классе не будет пытаться найти соответствие в базе.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38753239
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoМожет существует какая-то аннотация, которая новому объекту в этом классе не будет пытаться найти соответствие в базе.
При чем тут объекты? Речь о структуре сущности - классах и свойствах, а не объектах. Свойство можно пометить как @Transient, чтобы хибернейт его игнорировал. Только почему просто не замапить @ManyToMany мне не понятно.
...
Рейтинг: 0 / 0
org.hibernate.MappingException: Java Hibernate
    #38753522
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz Только почему просто не замапить @ManyToMany мне не понятно.

Вкратце ответ прост - я до этого пока не дорос. На данный момент у меня происходит вот такая штука. Я пишу thin-client приложение для обслуживания библиотеки (выдать книгу, вернуть книгу, зарегистрировать нового читателя и т. д.) используя Glassfish 4, JSF framework, MySQL.
Начинаю с малого, т. к. с Glassfish 4, JSF framework я раньше не работал. Сейчасу меня работает несколько функций, типа логина в систему и

Поиска книги по параметрам автора и названия произведения.
В итоге я имею ArrayList <Book>
в хhtml вот таким образом я отображаю названия произведений.
<ui:repeat var="item" value="#{findBookProcess.listOfBooks}"> <h1>#{item.bookName}</h1>
</ui:repeat>
и мне было бы очень удобно, чтобы в item (элемент ArrayList класса Book) содержал в себе в том числе и инфу об авторе. Но Book это есть @Entity
@Table(name="Book")
и при добавлении туда полей вылетает ошибка orh.Hibernate....
Я сейчас сделал так - завел второй массив ArrayList <Writer> и в нем каждому i-му автору соответствует i-й элемент из Book И осталось только придумать, как это выводить ввиде таблицы 2xN (N - длина массива) в xhtml файл.

Ну а @ManyToMany усложняет все. И БД надо немного переделывать и х. з., как потом это выводить, я думал сделать это позже. Хотя сейчас подумываю, а не сделать ли мне это сейчас.
...
Рейтинг: 0 / 0
14 сообщений из 64, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / org.hibernate.MappingException: Java Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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