Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Hibernate criteria. Как?


Автор: jvoid 14.12.2011, 13:24
Код

@Entity
public class LandArea {

    @Id
    @GenericGenerator(name = "mygen1", strategy = "increment")
    @GeneratedValue(generator = "mygen1")
    private Long Id;

        @Column
    private String street; // улица
        // частные лица собственники земельного участка
    @ManyToOne
    private NaturalPerson naturalPerson1;

    @ManyToOne
    private NaturalPerson naturalPerson2;
.......................................................


Код

@Entity
public class NaturalPerson {

    @Id
    @GenericGenerator(name = "mygen1", strategy = "increment")
    @GeneratedValue(generator = "mygen1")
    private Long Id;
    @Column
    private String lastName; // фамилия
............................................................


Нужен метод который бы выполнял поиск и возвращал все объекты содержащие в полях street, lastName строку поиска.
Код

public Collection<LandArea> search(String searchString) {
        Session session = null;
        List<LandArea> landAreas = new ArrayList<LandArea>();
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            Criteria gfg = session.createCriteria(LandArea.class);
                    
            
        } catch (Exception en) {
            en.printStackTrace();
        }
        return landAreas;

    }

Помогите не могу сообразить как построить критерион

Автор: Nofate 14.12.2011, 13:53
Как-то так:

Код

session.createCriteria(getEntityClass())
.add(Restrictions.disjunction()
  .add(Restrictions.like("street", searchString, MatchMode.ANYWHERE))
  .add(Restrictions.like("naturalPerson1.lastName ", searchString, MatchMode.ANYWHERE))
  .add(Restrictions.like("naturalPerson2.lastName ", searchString, MatchMode.ANYWHERE))
);

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