Prezados,
Estou com uma dúvida de como realzar uma consulta no Hibernate, vejam tenho uma classe chamada Shelf, nesta tem um campo chamado city que é o campo que faz relacionamento com a tabela City, tenho um método findByExample e outro findByCriteria, tanto um como o outro não funcionou, gostaria de saber como efetuar a consulta na classe Shelf passando como parametro o objeto City, vejam as minhas classes:
@Entity
@Table(name="SHELF")
public class Shelf {
@Id()
@Column(name="IP")
private String ip;
@Column(name="NAME", nullable=true)
private String name;
@Column(name="DATE", nullable=true)
@Temporal(TemporalType.DATE)
private Calendar date;
@Column(name="SERIAL", nullable=true)
private String serial;
@ManyToOne()
@JoinColumn(name="CITY_FK")
private City city;
@ManyToOne()
@JoinColumn(name="SHELF_MODEL_FK")
private ShelfModel shelfModel;
public Shelf() {
}
public Shelf(String ip, String name, Calendar date, String serial, City city, ShelfModel shelfModel) {
this.ip = ip;
this.name = name;
this.date = date;
this.serial = serial;
this.city = city;
this.shelfModel = shelfModel;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public Calendar getDate() {
return date;
}
public void setDate(Calendar date) {
this.date = date;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
public ShelfModel getShelfModel() {
return shelfModel;
}
public void setShelfModel(ShelfModel shelfModel) {
this.shelfModel = shelfModel;
}
public String toString(){
return getName();
}
}
Classe City
@Entity
@Table(name="CITY")
public class City {
@Id()
@Column(name="SYMBOL")
private String symbol;
@Column(name="NAME", nullable=true)
private String name;
@Column(name="COORDINATOR", nullable=true)
private String coordinator;
@Column(name="MAIL_COORDINATOR", nullable=true)
private String mailCoordinator;
public City() {
}
public City(String symbol, String name, String coordinator, String mailCoordinator) {
this.symbol = symbol;
this.name = name;
this.coordinator = coordinator;
this.mailCoordinator = mailCoordinator;
}
public String getCoordinator() {
return coordinator;
}
public void setCoordinator(String coordinator) {
this.coordinator = coordinator;
}
public String getMailCoordinator() {
return mailCoordinator;
}
public void setMailCoordinator(String mailCoordinator) {
this.mailCoordinator = mailCoordinator;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public String toString(){
return this.getName();
}
}
Classe DaoHibernate
public class DaoHibernate<T> implements Dao<T> {
private Session session;
private Class persistentClass;
public DaoHibernate(Session session, Class persistentClass) {
this.session = session;
this.persistentClass = persistentClass;
}
public Class getPersistentClass() {
return persistentClass;
}
public void setPersistentClass(Class persistentClass) {
this.persistentClass = persistentClass;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public void persist(T t) {
getSession().save(t);
}
public void remove(T t) {
getSession().delete(t);
}
public T search(Serializable id) {
return (T) getSession().load(persistentClass, id);
}
public List<T> listAll() {
return getSession().createCriteria(persistentClass).list();
}
public void update(T t) {
getSession().update(t);
}
public List<T> findByExample(T example) {
Criteria crit = getSession().createCriteria(persistentClass);
Example ex = Example.create(example);
crit.add(ex);
return crit.list();
}
public List<T> findByCriteria(Criterion... criterions){
Criteria crit = getSession().createCriteria(persistentClass);
for(Criterion c : criterions){
crit.add(c);
}
return crit.list();
}
}
Att,