Когда я использую Hibernate Example API, столбец Id просто игнорируется, что очень раздражает.
У меня есть таблица Temp (Id, Descr) и соответствующий объект.
И я хочу сделать это:
Temp exampleObject;
exampleObject.setId(6);
exampleObject.setDescr("six");
DetachedCriteria criteria = DetachedCriteria.forClass(exampleObject.getClass()).add(example);
....
и полученный sql выглядит так
select this_.ID as ID0_0_, this_.DESCR as DESCR0_0_
from test.temp this_ where (lower(this_.DESCR)=?)
Где this_.ID = 6?
Другое странное поведение - при создании примера только с идентификатором:
Temp exampleObject;
exampleObject.setId(6);
DetachedCriteria criteria = DetachedCriteria.forClass(exampleObject.getClass()).add(example);
....
и полученный sql:
select this_.ID as ID0_0_, this_.DESCR as DESCR0_0_
from test.temp this_ where (1=1)
Почему игнорируется мое ограничение Id?
Вот мой файл отображения Hibernate:
@Entity
@Table(name = "temp", catalog = "test")
public class Temp implements java.io.Serializable {
private static final long serialVersionUID = 9123374914153833823L;
private int id;
private String descr;
public Temp() {
}
public Temp(int id) {
this.id = id;
}
public Temp(int id, String descr) {
this.id = id;
this.descr = descr;
}
@Id
@Column(name = "ID", unique = true, nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "DESCR", length = 45)
public String getDescr() {
return this.descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
@Override
public String toString() {
return "Temp [id=" + id + ", descr=" + descr + "]";
}
}