Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622

Как одним методом POST записать рекорды в две таблицы

24.04.2021, 11:36. Показов 1069. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приложение Java 1.7 Spring MVC 4
Имеются две сущности
Java
1
2
3
4
5
6
7
8
9
10
11
@Entity
@Table(name="TEST")
public class Test implements Serializable{
 
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
 
    @Column(name="NAME", unique=true, nullable=false)
    private String name;
 
...
Java
1
2
3
4
5
6
7
8
9
@Entity
@Table(name = "FILE_UPLOAD")
public class FileUpload implements Serializable {
 
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
 
    @Column(name="TITLE")
    private String title;
Ради тестирования они никак не связаны. (План дальнейшего использования таблиц для упрощения оставим за рамками данной темы)
Первая сущность связана с соответствующей формой в которой всего одно поле String name;
Вторая сущьность не имеет формы.
Пытаюсь сделать последовательно записи в первой и второй таблице. Первую записываю данными из формы. Вторую пишу просто тестовыми данными типа так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 @Controller
public class TestController {
 
    @Autowired
    TestService testService;
 
    @Autowired
    FileUploadService fileUploadService;
 
...
 @RequestMapping(value = { "/newtest" }, method = RequestMethod.POST)
    public String saveTest(@Valid Test test, BindingResult result,
                                   ModelMap model, HttpServletRequest request) {
 
        FileUpload fileUpload = new FileUpload();
 
 
        if (result.hasErrors()) {
            return "registration";
        }
 
        testService.saveTest(test);
 
        // тестовая строка для второй таблицы
        fileUpload.setTitle("Title");
 
        fileUploadService.saveFileUpload(fileUpload);
 
        model.addAttribute("success", "Test" + test.getName() + " registered successfully");
        model.addAttribute("loggedinuser", userMethood.avtUserName());
 
        return "redirect:/tests";
    }
Сервисные impl слои
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Service("testService")
@Transactional
public class TestServiceImpl implements TestService {
 
    @Autowired
    private TestDao dao;
 
    public void saveTest(Test test) {
        dao.save(test);
    }
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Service("fileUploadService")
@Transactional
public class FileUploadServiceImpl implements FileUploadService {
 
    @Autowired
    private FileUploadDao dao;
 
    public void saveFileUpload(FileUpload fileUpload) {
        dao.save(fileUpload);
    }
 
}
Dao impl слои
Java
1
2
3
4
5
6
7
8
9
10
@Repository("testDao")
@Transactional
//public class TestDaoImpl implements TestDao {
public class TestDaoImpl extends AbstractDao<Integer, Test> implements TestDao {
 
    public void save(Test test) {
        persist(test);
    }
 
}
Java
1
2
3
4
5
6
7
8
9
@Repository("fileUploadDao")
@Transactional
public class FileUploadDaoImpl extends AbstractDao<Integer, FileUpload> implements FileUploadDao {
 
    public void save(FileUpload fileUpload) {
        persist(fileUpload);
    }
 
}
Результат работы метода очень странный. Первая таблица (данные поступают из формы) записывается без проблем.
Вторая иногда, очень редко записывается. Но чеще всего не пишется вообще. Приложение выскакивает на persist(fileUpload); и загружает талицу пользователей, которая имеется в приложении и работает совершенно независимо и правильно.
Ошибки никакой не вижу. Или просто не знаю как ее отловить. Никаких мыслей в голову не приходит.

Подскажите пожалуйста что я делаю не так.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2021, 11:36
Ответы с готовыми решениями:

Как одним методом POST записать рекорды в две таблицы
Имеются две сущности @Entity @Table(name=&quot;TEST&quot;) public class Test implements Serializable{ @Id...

Как отправить данные из таблицы методом POST
Здравствуйте есть таблица которое заполняет оператор, как отправить эти данные через Ajax методом Post на php обработчик? &lt;table &gt;...

Как записать значения сразу в две таблицы
Парсер записывает в News информацию, нужно чтобы title в News передавался и в title в ViewedNews, кажется это отношение бд, помогите...

2
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622
24.04.2021, 18:41  [ТС]
Да. На всякий случай. Конфигурация.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.websystique.springmvc.configuration" })
@PropertySource(value = { "classpath:application.properties" })
public class HibernateConfiguration {
 
    @Autowired
    private Environment environment;
 
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(new String[] { "com.websystique.springmvc.model" });
        sessionFactory.setHibernateProperties(hibernateProperties());
        return sessionFactory;
     }
    
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
        return dataSource;
    }
    
    private Properties hibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
        properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
        properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
        properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
        return properties;
    }
    
    @Bean
    @Autowired
    public HibernateTransactionManager transactionManager(SessionFactory s) {
       HibernateTransactionManager txManager = new HibernateTransactionManager();
       txManager.setSessionFactory(s);
       return txManager;
    }
 
}
Свойства для MSSQL
Java
1
2
3
4
5
6
7
8
jdbc.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url = jdbc:sqlserver://localhost;databaseName=***
jdbc.username = ***
jdbc.password = ***
hibernate.dialect = org.hibernate.dialect.SQLServerDialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.hbm2ddl.auto = create-drop
0
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622
25.04.2021, 10:44  [ТС]
В таблицах, в одной и другой было UNIQUE (....), для первых полей
Из формы данные вводились с клавиатуры случайнм образом. Поэтому первая таблица записывалась без проблем.
Во второй постоянно присутствовало одно и то же fileUpload.setType("Type");
Таблица не записывалась.
Пока не понимаю как такие казусы отлавливать. Сервер ошибок не выдавал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2021, 10:44
Помогаю со студенческими работами здесь

Две таблицы одним ударом) Бд Комиссионый магазин
Бд, в которой есть таблицы и соответствующие им формы &quot;Клиент&quot;, &quot;Товар&quot;, &quot;Прием товара&quot;. Клиент сдает товар(заполняется Клиент и...

Можно ли одним INSERT посадить данные в две таблицы ?
ув АЛЛ, можно ли одним INSERT посадить данные в две таблицы ?

Как записать две строки поля одной таблицы в одну строку другой?
Есть такой запрос к БД и результат этого запроса две строки ROH и KOR поля FIL С 6 строки результат запроса заполняется в kbmMemTable1...

Вывод таблицы переданных параметров методом POST
Доброго времени суток. Подскажите как можно вывести таблицу переданных параметров? Спасибо за внимание. Добавлено через 1 час 3...

Как использовать объект, созданный одним методом, другим методом?
Написал класс: class _MainMenu { private string _allOpenFileNameAndPath;//Массив открытый файлов (путь и имя) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru