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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate, один Entity для таблицы и view 
:(
    Опции темы
unkis
Дата 29.3.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята у меня следующая проблема:

Есть таблица скаже "TableA", которя состоит из следующих параметров (p1,p2,p3)

Соответственно есть Entity "TableAEntity" который содержит/описывает эти три параметра(p1,p2,p3)


Также существует "ViewА" которое содержит эти три параметра(p1,p2,p3) плюс ещё два дополнительных(v1,v2) т.е. состоит из (p1,p2,p3,v1,v2)


Вот и вопрос: можно ли создать один Entity-Класс который бы мапил  "TableA" и "ViewА"?

Зарание спасибо


--------------------
www.unkis.com
PM MAIL WWW   Вверх
MaxPayneC
Дата 29.3.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да, возможно.
Код

create view admins_view as select admin_id, login, pwd_md5, concat(login, ' ', pwd_md5) as `field_concat` from admins;


Код

package com.vc.vacancies.model.entities.users;


import javax.persistence.*;

/**
 * todo class javadoc
 * <p/>
 * Date: 29.03.2010<br />
 * Time: 19:36:30<br />
 *
 * @author AdminView
 * @version 1.0
 */
@Entity
@Table(name = "admins_view")
public class AdminView
{
    private Integer id;

    private String login;

    private String password;

    private String concat;

    @Id
    @Column(name = "admin_id")
    @GeneratedValue
    public Integer getId()
    {
        return id;
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

    @Basic
    @Column(name = "login")
    public String getLogin()
    {
        return login;
    }

    public void setLogin(String login)
    {
        this.login = login;
    }

    @Basic
    @Column(name = "pwd_md5")
    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    @Basic
    @Column(name = "field_concat")
    public String getConcat()
    {
        return concat;
    }

    public void setConcat(String concat)
    {
        this.concat = concat;
    }
}


Код

    public static void main(String[] args)
    {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        AdminView view = (AdminView) session.load(AdminView.class, 1);
        System.out.println("field_concat == " + view.getConcat());
    }


И в hibernate.cfg.xml прописать.
Идея в том, чтобы написать энтити для вью, а не для реальной таблицы. Если я правильно понял то, что вам нужно получить, это должно работать.
PM   Вверх
unkis
Дата 8.4.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MaxPayneC @  29.3.2010,  16:45 Найти цитируемый пост)
Идея в том, чтобы написать энтити для вью, а не для реальной таблицы. Если я правильно понял то, что вам нужно получить, это должно работать. 

Нет, идея как раз не в том чтобы для view  написать  entity,  а в том чтбы создать один, так сказать универсальный entity, который бы подходил и для таблицы и для view


--------------------
www.unkis.com
PM MAIL WWW   Вверх
MaxPayneC
Дата 8.4.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тогда это невозможно, т.к. класс мапится на одну таблицу(вьюху) и честно говоря я не понимаю зачем это может быть нужно.
PM   Вверх
Joss
Дата 8.4.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно попробовать извратиться... Написать MappedSuperclass который будет содержать общие поля, и унаследовать от него 2 entity. если сильно нужно конечно...
PM MAIL   Вверх
MisterCleric
Дата 8.4.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



А можно так в hbm.xml: 
Код

<class name="my.company.app.User" table="USER" entity-name="user">
        <id column="ID" name="id" type="java.lang.Long">
            <generator class="org.hibernate.id.SequenceGenerator">
                <param name="sequence">GEN_USER</param>
            </generator>
        </id>
        <property column="USER_NAME" name="userName" type="java.lang.String"/>
    </class>
    
    <class name="my.company.app.User" table="VUSER" entity-name="vuser">
        <id column="ID" name="id" type="java.lang.Long"/>
        <property column="USER_NAME" name="userName" type="java.lang.String"/>
    </class>


и манипулировать Entity не по классу, а по вот тому хитрому атрибуту entity-name

Да, об этом написано в книге Java Persistence with Hibernate
Глава 3, страница 147

Это сообщение отредактировал(а) MisterCleric - 8.4.2010, 17:35


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

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

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


 




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


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

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