Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Named Query in Java Class


Автор: Bulat 26.5.2016, 16:09
Есть сиквел в постгрес

Код

select
  object_property_value.value
from object_property_value
  join object_instance_property on object_instance_property.object_property_id = object_property_value.object_property_id
  join object_type_property_t on object_type_property_t.type_object_property_id = object_instance_property.type_object_property_id
  join property_t on property_t.property_id = object_type_property_t.property_id
    and property_t.property_id = 'k-exp'
  join object_instance on object_instance.object_id = object_instance_property.object_id
  join enterprise on enterprise.ent_id = object_instance.ent_id
    and enterprise.ent_id = 1004


нужно его записать в named query. Примеры с джойном двух таблиц полно, а вот как с несколькими - хз

вписать в следующий класс:

Код

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;


/**
 * The persistent class for the object_property_value database table.
 * 
 */
@Entity
@Table(name="object_property_value")
@NamedQueries({
@NamedQuery(name="ObjectPropertyValue.findAll", query="SELECT o FROM ObjectPropertyValue o"),
@NamedQuery(name="ObjectPropertyValue.findLastByProperty", query="SELECT o FROM ObjectPropertyValue o where o.objectInstanceProperty.objectPropertyId = :objectPropertyId order by o.dc desc")
})
public class ObjectPropertyValue implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ", sequenceName = "OBJECT_PROPERTY_VALUE_ID_SEQ")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ")
    @Column(name="id_object_property_value")
    private long idObjectPropertyValue;

    private Timestamp dc;

    private String value;

    //bi-directional many-to-one association to ObjectInstanceProperty
    @ManyToOne
    @JoinColumn(name="object_property_id")
    private ObjectInstanceProperty objectInstanceProperty;

    public ObjectPropertyValue() {
    }

    public long getIdObjectPropertyValue() {
        return this.idObjectPropertyValue;
    }

    public void setIdObjectPropertyValue(long idObjectPropertyValue) {
        this.idObjectPropertyValue = idObjectPropertyValue;
    }

    public Timestamp getDc() {
        return this.dc;
    }

    public void setDc(Timestamp dc) {
        this.dc = dc;
    }

    public String getValue() {
        return this.value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public ObjectInstanceProperty getObjectInstanceProperty() {
        return this.objectInstanceProperty;
    }

    public void setObjectInstanceProperty(ObjectInstanceProperty objectInstanceProperty) {
        this.objectInstanceProperty = objectInstanceProperty;
    }

}

Автор: LSD 27.5.2016, 19:43
Насчет Named Query не скажу, не работал. Но можно зайти с другой стороны: создать View.

Автор: Bulat 30.5.2016, 13:32
Цитата(LSD @  27.5.2016,  19:43 Найти цитируемый пост)
Насчет Named Query не скажу, не работал. Но можно зайти с другой стороны: создать View. 


Ты уж будь добр, скажи пример хоть с view  smile

Добавлено через 4 минуты и 52 секунды
Код

    ....
    and property_t.property_id = ?
    ....
    and enterprise.ent_id = ?


только параметры запроса не статические, а динамические.

В первом посте, просто пример!

Автор: zera 30.5.2016, 14:04
Цитата(Bulat @  26.5.2016,  16:09 Найти цитируемый пост)
нужно его записать в named query. Примеры с джойном двух таблиц полно, а вот как с несколькими - хз

ну что тут сказать: с несколькими так же, как с двумя, только с несколькими.  
вместо "просто примера" покажите как вы пробовали и что конкретно не получилось

Автор: Bulat 30.5.2016, 14:10
Цитата(zera @  30.5.2016,  14:04 Найти цитируемый пост)
ну что тут сказать: с несколькими так же, как с двумя, только с несколькими.  
вместо "просто примера" покажите как вы пробовали и что конкретно не получилось 


Цитата(LSD @  27.5.2016,  19:43 Найти цитируемый пост)
Насчет Named Query не скажу, не работал. 


 smile 

А нормальных сроков для изучения named query начальство времени не дает! Порой приходится работать по принципу copy-past  smile 

Автор: zera 30.5.2016, 16:22
Код

@NamedQuery(name="ObjectPropertyValue.findAll", query="SELECT o, h.name FROM ObjectPropertyValue o JOIN PropertyContainer p LEFT JOIN ContainerElement e Join ElementValue e JOIN ValueHolder h where h.value = ? order by e.sortOrder")
…
@ManyToOne
@JoinColumn(name="property_container_id")
private PropertyContainer propertyContainer;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)