Выберите запрос с 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);