Не находит элемент в таблице

203
16 января 2018, 12:42

Есть таблица с именем place-car:

Данной таблице отвечает Entity class:

@Entity
@Table( name = "place-car" )
public class PlaceCarTable{
    @Id
    @Column( name = "id" )
    private int id;
    @Column( name = "idcar" )
    private int carId;
    @Column( name = "idplace" )
    private int placeId;
    @Column( name = "timeBegin" )
    private int timeBegin;
    @Column( name = "timeEnd" )
    private int timeEnd;

    public PlaceCarTable(  ){
    }

Необходимо вынуть из этой таблицы выделенную строку, это происходит в методе:

public Place isPark( String numbCar ){
    CarTable carTable = selectWithCriteriaSingle( CarTable.class, "numbCar", numbCar  );
    PlaceCarTable placeCarTable = selectWithCriteriaSingle( PlaceCarTable.class, "carId", carTable.getTsId(), "timeEnd", -1 );
    if( placeCarTable != null ){
        PlaceDAO placeDAO = new PlaceDAO();
        return placeDAO.selectPlace( placeCarTable.getPlaceId() );
    }
    return null;
}

Строка должна вернуться в placeCarTable, вот описание функции selectWithCriteriaSingle:

public <T, V1, V2> T selectWithCriteriaSingle( Class Table, String field1, V1 value1, String field2, V2 value2 ) throws HibernateException{
    try {
        connect();
        CriteriaBuilder builder = session.getCriteriaBuilder();
        CriteriaQuery<T> query = builder.createQuery( Table );
        Root<T> root = query.from( Table );
        query.select( root ).where( builder.equal( root.get( field1), value1 ), builder.equal( root.get( field2), value2 ));
        Query<T> q = session.createQuery( query );
        return ( T ) q.getSingleResult();
    }catch( Exception ex ){
        System.out.println( ex );
        return null;
    }finally {
        disconnect();
    }
}

Данная функция запрашивает у базы данных строку, в которой field1 = value1 и field2 = value2 ( value1 = 1 и value2 = -1, это я проверял дебагером ), но функция выкидывает исключение:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Буду благодарен за помощь!

Answer 1

Привет. Меня смущает строка

query.select( root ).where( builder.equal( root.get( field1), value1 ), builder.equal( root.get( field2), value2 ));

Мне кажется не хватает builder.and(...)

query.select( root ).where(builder.and(builder.equal( root.get( field1), value1 ), builder.equal( root.get( field2), value2 )));
READ ALSO
Многопоточность в java (swing)

Многопоточность в java (swing)

У меня есть серверная и клиентская частьС сервера я отправляю данные клиентам

178
Jasperstudio задать имена отчетов

Jasperstudio задать имена отчетов

В JasperStudio выводится отчет, таких отчетов набирается множество, они объединяются в приложении в один файл пдфЕсли просматривать во вьюверах...

144
Не выполняется условие if, хотя else выполняется

Не выполняется условие if, хотя else выполняется

Почему-то не выводит сообщение о том, что книга взята и не удаляет её из списка доступных книг, хотя условие else выполняется и выводит, что книги...

169
Загрузить изображение с ImageView на public_html

Загрузить изображение с ImageView на public_html

Мне нужно с ImageView загрузить изображение в хостинг, в одну из папок public_htmlКак можно, задав bitmap с ImageView и путь на ftp, загрузить изображение?

163