Выберите запрос с HQL против критериев

Я хочу искать в таблице (PaletAction) по message_ID. Когда я использую критерии без псевдонима ( join), он проверяет, возвращает ли результат 0, но HQL возвращает правильный результат. Почему они возвращают другой результат?

@Entity
@Table(name="palet_action")
public class PaletAction {


@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "action_ID")
private int ID;


@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "message_ID", nullable = false)
private Message message;




@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "palet_action_conn",joinColumns = {
        @JoinColumn(name = "action_ID", nullable = false) },
        inverseJoinColumns = { @JoinColumn(name = "palet_ID",
                nullable = false) })
private Set<Palet> paletSet=new HashSet<Palet>();

@Column(name="carrier",length = 2,nullable=true)
private String carrier;

@Column(name="flightNo",length = 5,nullable=true)
private String flightNo;

@Temporal(TemporalType.DATE)
@Column(name="flightDate", nullable=true)
private Date flightDate;

@Column(name="aircraft",length = 10,nullable=true)
private String aircraft;

@Column(name = "arriving", nullable = true,length = 3)
private String arriving;

@Column(name = "departing", nullable = true,length = 3)
private String departing;

Выберите PaletAction по запросу

    Message message=new Message();
    message.setID(message_id);
    Query query1=session.createQuery("Select ID as ID from PaletAction"
            + " Where message=:message_id");
    query1.setParameter("message_id", message);
    query1.setResultTransformer(Transformers.aliasToBean(PaletAction.class));

Выберите PaletAction по критериям

    Criteria criteria=session.createCriteria(PaletAction.class);
    Message message=new Message();
    message.setID(message_id);
    ProjectionList projectionList=Projections.projectionList();
    projectionList.add(Projections.property("ID"));
    criteria.setProjection(projectionList);
    criteria.add(Expression.eq("message",message));
    criteria.setResultTransformer(
    Transformers.aliasToBean(PaletAction.class);

0 ответов

Другие вопросы по тегам