Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
@Transactional,或事務管理器未正確配置,導致 Hibernate 獲取的連接默認只讀。DriverManagerDataSource 或連接池 (DBCP/Hikari) 設置了 readOnly=true。session.setFlushMode(FlushMode.MANUAL) 未手動 flush()。
@Service
@Transactional // 必須
public class ProductServiceImpl {
public void insert(Product p) { dao.save(p); }
}
dataSource bean 無 readOnly 屬性或為 false。在 DAO 保存前打印:
Session session = sessionFactory.getCurrentSession();
Connection conn = session.connection();
System.out.println("Conn readOnly: " + conn.isReadOnly());