JdbcTemplate提交

时间:2018-06-23 00:51:56

标签: commit jdbctemplate

我必须在SQL 2012中将行插入两个表中。

我正在使用jdbcTemplate。 我将两个查询都写在同一个方法中,因为我希望它全部或全部都不做。即两个查询均通过或两个查询均失败。

在数据库内部,我定义了一个外键约束。 (随附的数据库架构图)。

现在,数据库抛出错误“ INSERT语句与FOREIGN KEY约束冲突”。

我需要:

  • 找到在第二次查询之前提交到第一张表的方法。
  • 创建2个单独的方法,并将它们链接到通过或失败。

我希望第二个。您能帮我一些代码吗?

    public class SavetoDBDaoImpl implements SavetoDBDao {
        private JdbcTemplate jdbcTemplate;
        public static final Logger logger = LoggerFactory
                .getLogger(SavetoDBDaoImpl.class);

        @Autowired
        public void setJdbcTemplate(DataSource dataSource) {
            this.jdbcTemplate = new JdbcTemplate(dataSource);
        }

        @Override
        @Transactional(rollbackFor = Exception.class)
        public void saveSchedInstr(UserDetails userDetails) throws Exception { 
                String insertIntoUserInstanceStatus = "INSERT INTO UserInstanceStatus(UserID,CreateTS,InsertTs,EmployeeID,StatusCd) VALUES(?,?,?,?,?)";
            String insertIntoUserStatusDetails = "INSERT INTO UserStatusDetails(UserID,CreateTS,InsertTs,EmployeeID, StatusCd, STATE, HEADER, BODY, RESPONSETIME, PROTOCOL) VALUES(?,?,?,?,?,?,?,?,?,?)";

                /*
                 * Store status into table UserInstanceStatus
                 */
                jdbcTemplate.update(insertIntoUserInstanceStatus, userDetails.getUserId(),LocalDateTime.now(),
                        LocalDateTime.now(), userDetails.getEmployeeId(),
                        userDetails.getState());

                /*
                 * Store status details into table UserStatusDetails.
                 */
                try {
jdbcTemplate.update(insertIntoUserStatusDetails, userDetails.getUserId(),
            LocalDateTime.now(), LocalDateTime.now(),
                        userDetails.getEmployeeId(), userDetails.getStatusCd(), userDetails.getState(),
                        userDetails.getHeader().toString(), userDetails.getBody().toString(),
                        userDetails.getResponseTime(), userDetails.getStatus()
                                .getProtocol());
                logger.debug("Successfully stored user details into DB");
                } catch(Exception e) {
                    e.printStackTrace();
                }

        }   
    }

enter image description here

0 个答案:

没有答案