【问题标题】:javax/transaction/SystemException errorjavax/事务/系统异常错误
【发布时间】:2023-03-20 12:59:01
【问题描述】:

我的项目有一些问题,我想对其进行配置,但出现错误:

log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Exception in thread "main" java.lang.UnsupportedOperationException: The application must supply JDBC connections
at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:61)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435)
at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:61)
at com.politechnika.hibernatealone.application.HibernateAlone.main(HibernateAlone.java:23)

这是我的HibernateAlone.java 文件:

import com.politechnika.hibernatealone.entity.Company;
import com.politechnika.hibernatealone.entity.Employee;
import com.politechnika.hibernatealone.entity.Position;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.Arrays;

public class HibernateAlone {
    public static void main(String[] args) {

        EntityManagerFactory factory = Persistence.createEntityManagerFactory("hibernateAlone");
        EntityManager manager = factory.createEntityManager();

        manager.getTransaction().begin();

        Position position = new Position();
        position.setPositionName("Manager");

        manager.persist(position);

        Company company = new Company();
        company.setCompanyName("Fulda");

        manager.persist(company);

        Employee employee = new Employee();
        employee.setPosition(position);
        employee.setFullName("Zenek Zenkowski");
        employee.setStreet("Paderewskiego");
        employee.setStreetNumber("26/64");
        employee.setCompany(company);

        manager.persist(employee);
        manager.getTransaction().commit();

        CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();
        CriteriaQuery<Employee> query = criteriaBuilder.createQuery(Employee.class);
        Root<Employee> from = query.from(Employee.class);
        CriteriaQuery<Employee> select = query.select(from);
        TypedQuery<Employee> queryFromManager = manager.createQuery(select);

        // manager.getTransaction().begin();

    for (Employee emp : queryFromManager.getResultList()) {
        System.out.println(emp.toString());
        // manager.remove(emp);
    }

    // manager.getTransaction().commit();
    manager.close();
    factory.close();
    }
}

这是一个配置文件persistence.xml

<persistence-unit name="hibernateAlone">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.politechnika.hibernatealone.entity.Employee</class>
    <class>com.politechnika.hibernatealone.entity.Company</class>
    <class>com.politechnika.hibernatealone.entity.Position</class>
    <!-- the JNDI data source -->
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
        <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
        <property name="hibernate.connection.username" value="postgres"/>
        <property name="hibernate.connection.password" value="postgres"/>
        <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/postgres"/>

        <property name="hibernate.default_schema" value="crm"/>

        <property name="hibernate.hbm2ddl.auto" value="create"/>

        <property name="show_sql" value="true"/>
    </properties>
</persistence-unit>

感谢您对这个问题的帮助

【问题讨论】:

    标签: java hibernate maven jpa


    【解决方案1】:

    您需要添加此依赖项才能使 Hibernate 正常工作。

    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
    </dependency>
    

    并且还取消注释带有开始和回滚事务的代码部分,EntityManager 需要与事务中的实体一起使用。

    【讨论】:

    • 是的,应该可以解决 javax/transaction/SystemException 错误。
    • w jaki sposób mogę rozwiązać log4j 警告?抱歉,我在 java 中是绿色的;/
    • 你必须配置 Log4J 才能摆脱这个警告(所以请阅读一些关于它的教程)。下次也用英文:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多