powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate sqlQuery.setBinary() нужна помощь с запросом
6 сообщений из 6, страница 1 из 1
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39169980
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно вставить строку с blob полем

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    @Transactional
    public void insertProduct(ProductModel productModel, MultipartFile image) {
        byte[] imageInBytes = new byte[0];
        try {
            imageInBytes = image.getBytes();//получаем массив байт
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        //запрос, сейчас не принимает байты просто вставляет NULL
        String sql = "INSERT INTO `product` (`category_id`, `price`, `productName`, `productDescription`, `is_active`, `manufacturer_country_id`, `image`) \n" +
                "SELECT category.id, '" + productModel.getPrice() + "', '" + productModel.getProductName() + "', '" + productModel.getProductDescription() + "', '" + productModel.getIsActive() + "', manufacturer_country.id, " + " NULL " +
                "FROM category, manufacturer_country\n" +
                "WHERE category.categoryName='" + productModel.getCategoryName() + "' \n" +
                "AND manufacturer_country.country='" + productModel.getManufacturerCountry() + "'";
        SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
        //query.setBinary(0, imageInBytes); как с помощью метода передать байты в запрос? что поменять в запросе?
        //query.setBinary(6, imageInBytes); так java.lang.IllegalArgumentException: No positional parameters in query
        query.executeUpdate();
    }
...
Рейтинг: 0 / 0
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39169989
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK1988,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    @Transactional
    public void insertProduct(ProductModel productModel, MultipartFile image) {
        byte[] imageInBytes = new byte[0];
        try {
            imageInBytes = image.getBytes();//получаем массив байт
        } catch (IOException e) {
            e.printStackTrace();
        }
        

        String sql = "INSERT INTO `product` (`category_id`, `price`, `productName`, `productDescription`, `is_active`, `manufacturer_country_id`, `image`) \n" +
                "SELECT category.id, '" + productModel.getPrice() + "', '" + productModel.getProductName() + "', '" + productModel.getProductDescription() + "', '" + productModel.getIsActive() + "', manufacturer_country.id, " + " ? " +
                "FROM category, manufacturer_country\n" +
                "WHERE category.categoryName='" + productModel.getCategoryName() + "' \n" +
                "AND manufacturer_country.country='" + productModel.getManufacturerCountry() + "'";
        SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
        query.setBinary(0, imageInBytes);

        query.executeUpdate();
    }
...
Рейтинг: 0 / 0
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39170321
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39170359
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторString sql = "INSERT INTO `product` (`category_id`, `price`, `productName`, `productDescription`, `is_active`, `manufacturer_country_id`, `image`) \n" +
"SELECT category.id, '" + productModel.getPrice() + "', '" + productModel.getProductName() + "', '" + productModel.getProductDescription() + "', '" + productModel.getIsActive() + "', manufacturer_country.id, " + " ? " +
"FROM category, manufacturer_country\n" +
"WHERE category.categoryName='" + productModel.getCategoryName() + "' \n" +
"AND manufacturer_country.country='" + productModel.getManufacturerCountry() + "'";

лучше заменить на
StringBuilder sql = new StringBuilder(подходящая длина);
с зполнением через .append, последующим преобразованием в строку.

"\n" в данном случае без смысленно - достаточно простого пробела
а в общем присоединюсь к Petro123
...
Рейтинг: 0 / 0
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39170368
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Hibernate sqlQuery.setBinary() нужна помощь с запросом
    #39170370
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадялучше заменить на
StringBuilder sql = new StringBuilder(подходящая длина);
с зполнением через .append, последующим преобразованием в строку.
Ну и нахрена тут StringBuilder? Компилятор сам его подставит вместо конкатенации. Использовать StringBuilder явно имеет смысл только в циклах.

вадя"\n" в данном случае без смысленно - достаточно простого пробела

Бывает "смысленно", чтобы в логах потом нормально смотрелось.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate sqlQuery.setBinary() нужна помощь с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]