mybatis/mybatis-3 · error · BuilderException
Environment declaration requires a TransactionFactory.
Error message
Environment declaration requires a TransactionFactory.
What it means
Error "Environment declaration requires a TransactionFactory." thrown in mybatis/mybatis-3.
Source
Thrown at src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java:346
DatabaseIdProvider databaseIdProvider = (DatabaseIdProvider) resolveClass(type).getDeclaredConstructor()
.newInstance();
databaseIdProvider.setProperties(properties);
Environment environment = configuration.getEnvironment();
if (environment != null) {
String databaseId = databaseIdProvider.getDatabaseId(environment.getDataSource());
configuration.setDatabaseId(databaseId);
}
}
private TransactionFactory transactionManagerElement(XNode context) throws Exception {
if (context != null) {
String type = context.getStringAttribute("type");
Properties props = context.getChildrenAsProperties();
TransactionFactory factory = (TransactionFactory) resolveClass(type).getDeclaredConstructor().newInstance();
factory.setProperties(props);
return factory;
}
throw new BuilderException("Environment declaration requires a TransactionFactory.");
}
private DataSourceFactory dataSourceElement(XNode context) throws Exception {
if (context != null) {
String type = context.getStringAttribute("type");
Properties props = context.getChildrenAsProperties();
DataSourceFactory factory = (DataSourceFactory) resolveClass(type).getDeclaredConstructor().newInstance();
factory.setProperties(props);
return factory;
}
throw new BuilderException("Environment declaration requires a DataSourceFactory.");
}
private void typeHandlersElement(XNode context) {
if (context == null) {
return;
}
for (XNode child : context.getChildren()) {View on GitHub (pinned to 008069adb1)
Solutions
- Add a <transactionManager> element with a type such as JDBC or MANAGED inside the <environment> declaration.
- Example: <transactionManager type="JDBC"/>.
When it happens
Trigger: Thrown at src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java:346 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mybatis/mybatis-3@008069adb1 (2026-08-14).
Data as JSON: /api/errors/fa12aae284cb05e8.
Report an issue: GitHub.