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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с Hibernate HQL, Соединение двух таблиц 
V
    Опции темы
xrotgar
Дата 9.6.2012, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день.
Есть две таблицы:
Код

CREATE TABLE status (
    id INTEGER NOT NULL DEFAULT nextval('status_id_seq'),
    status_name VARCHAR(30) NOT NULL,
    ...
    PRIMARY KEY (id)
);

Код

CREATE TABLE cards (
    id INTEGER NOT NULL DEFAULT nextval('cards_id_seq'),
    ...
    id_status INTEGER NOT NULL,
    ...
    FOREIGN KEY (id_status) REFERENCES status(id),
    PRIMARY KEY  (id)
);

Мапинг осуществляется через анотации:
Код

@javax.persistence.Table(name = "status", schema = "public", catalog = "")
@Entity
public class StatusEntity
{
    private Integer id;
    private String status_name;
    
    private Collection<CardsEntity> cardsById;

    public StatusEntity() {}

    @Id
    @javax.persistence.Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Basic
    @javax.persistence.Column(name = "status_name")
    public String getStatus_name() {
        return status_name;
    }

    public void setStatus_name(String status_name) {
        this.status_name = status_name;
    }

    @OneToMany(mappedBy = "statusByIdStatus")
    public Collection<CardsEntity> getCardsById() {
        return cardsById;
    }

    public void setCardsById(Collection<CardsEntity> cardsById) {
        this.cardsById = cardsById;
    }
}

Код

@javax.persistence.Table(name = "cards", schema = "public", catalog = "")
@Entity
public class CardsEntity
{
    private Integer id;
    private Integer id_status;
    private StatusEntity statusByIdStatus;

    public CardsEntity() {}

    @Id
    @javax.persistence.Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId()    {
        return id;
    }

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

    @Basic
    @javax.persistence.Column(name = "id_status")
    public Integer getId_status() {
        return id_status;
    }

    public void setId_status(Integer id_status) {
        this.id_status = id_status;
    }

    @ManyToOne
    @JoinColumn(name = "id_status", referencedColumnName = "id", insertable = false, updatable = false)
    public StatusEntity getStatusByIdStatus() {
        return statusByIdStatus;
    }

    public void setStatusByIdStatus(StatusEntity statusByIdStatus) {
        this.statusByIdStatus = statusByIdStatus;
    }



При попытке выполнить запрос
Код

session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("select c from CardsEntity as c inner join StatusEntity as s where  s.status_name=:statusName").setString("statusName","PAY");
 paymentCards = (List<CardsEntity>) query.list();

Получаю следующую ошибку Path expected for join! 

Проблемо скорей всего в неправильном мапинге, но понять где ошибся не могу.
Заранее спасибо. 



PM MAIL ICQ Jabber   Вверх
xrotgar
Дата 9.6.2012, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблему решил. Ошибка была в неправильном запросе.
Код

session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
Query query = session.createQuery("select c from CardsEntity  c join c.statusByIdStatus s where s.status_name = :statusName").setString("statusName","PAY");
paymentCards = (List<CardsEntity>) query.list();

Тему можно закрывать

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

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

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


 




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


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

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