JPA: не удалось найти TransactionManager - PullRequest
5 голосов
/ 08 ноября 2011

Я использую JPA 2 в проекте JSF 2, поэтому я настраиваю свой источник данных в GlassFish v3, все в порядке, но если я пытаюсь протестировать JPA-запросы в Hibernate Tools, выдается следующая ошибка:

Sessionfactory error:Could not locate TransactionManager

Вот мой файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="SuaParte" transaction-type="JTA">
        <jta-data-source>jdbc/suaparte_ds</jta-data-source>
        <class>entity.Area</class>
        <properties>
            <property name="eclipselink.logging.level" value="FINE"/>
            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
        </properties>


    </persistence-unit>
</persistence>

Я использую EclipseLink 2.3 (Indigo) и JPA 2 в моем проекте Eclipse JSF 2.

РЕДАКТИРОВАТЬ Следуйте подходу @fonini, мой hibernate.properties:

hibernate.connection.username=<filled>
hibernate.connection.password=<filled>
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.url=<filled>
hibernate.connection.provider_class=org.hibernate.connection.DriverManagerConnectionProvider
hibernate.datasource=jdbc/suaparte_ds
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup

Но теперь выдает мне еще одну ошибку: error

Нужно ли было менять id generatorв моих сущностях?

    @Entity
    @Table(name="product")
    public class Product implements Serializable {
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy=GenerationType.SEQUENCE)
        private Integer id;

        @Size(max=150, message="150 caracteres no máximo")
        private String description;

        // getters and setter
}

1 Ответ

0 голосов
/ 08 ноября 2011

Поскольку Hibernate Tools запускается в Eclipse, он не имеет доступа к конкретным источникам данных сервера приложений.

Вы можете использовать файл свойств для настройки соединения, которое будет переопределять источник данных.файл примера:

hibernate.connection.username=user
hibernate.connection.password=pass
hibernate.connection.driver_class=org.PostgreSQL.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.url=jdbc:postgresql...

hibernate.connection.provider_class=org.hibernate.connection.DriverManagerConnectionProvider
hibernate.datasource=
hibernate.transaction.manager_lookup_class=
...