Hibernate problem z konfiguracją

Odpowiedz Nowy wątek
2012-12-08 23:32
0

Od kilku godzin walcze z JPA 2.0 jako dostawca jest Hibernate była wersja 4.1.8 ale teraz na starszą zmieniłem bo sądziłem że ruszy, wszystko siedzi na Tomcat 7.
Dostaje taki błąd

org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider

description The server encountered an internal error (org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider) that prevented it from fulfilling this request.

exception 

java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:62)
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    jee.mw.encje.StudentDAO.<init>(StudentDAO.java:14)
    jee.mw.serwlet.index.doGet(index.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.

plik persistence wygląda tak

<?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="ORM">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>jee.mw.encje.Student</class>

        <properties>
    <property name="hibernate.connection.username" value="root"/>
    <property name="hibernate.connection.password" value="root"/>
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost/studenci"/>
    <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    </properties>
    </persistence-unit>
</persistence> 

na razie chche tylko nawiazac polaczenie nic wiecej robie to tak

public class StudentDAO {

    private EntityManager em;
    private static EntityManagerFactory emf; 

    public StudentDAO() {
        emf = Persistence.createEntityManagerFactory("ORM");
        em = emf.createEntityManager();
    }

} 

Nie wiem dlaczego nie działa. Gdzieś czytałem że jeśli chodzi o najnowsza wersje to jakiś bug był z Tomcat 7. Ale kur... jakis miesiąc temu robiłem niemal że tak samo i wszystko działało a teraz pociąć się mogę. Będę niezmiernie wdzięczny ża każdą wskazówkę, która mi pomorze to ogarnąć.

Pozostało 580 znaków

2012-12-08 23:55
0

A możesz pokazać POMa którego tutaj masz? Bo takie dziwne błędy zwykle biorą się z tego że masz wrzucone dwie rożne wersje jakiejś biblioteki (w tym wypadku providera JPA). Jesteś pewien że nie masz wrzuconych dwóch różnych jarów z dostawcami?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-12-09 00:19
0

Mam tylko starą wersję. Resztę wywaliłem i dałem nowego Tomcata.
Projekt
http://zapodaj.net/1e96d37107aca.png.html

Tomcat
http://zapodaj.net/469d8a2648df1.png.html

To co w projekcie mam na Tomcata wrzucone bo kiedyś ktoś mi poradził aby tak robić.

Coś się ruszyło.

Exception report

message No Persistence provider for EntityManager named ORM

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

javax.persistence.PersistenceException: No Persistence provider for EntityManager named ORM
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    jee.mw.encje.StudentDAO.<init>(StudentDAO.java:15)
    jee.mw.serwlet.index.doGet(index.java:32)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.33 logs.

Teraz to dostaje

Zachowałem się jak Cygan. Dodałem wymagane biblioteki ale samej biblioteki do Hibernate3 nie dodałem. Zmieniły się błędy. teraz niby jest złe mapowanie samej klasy. ale to już za pare h po ogarniam bo nerwowo nie daje rady z tym.

edytowany 3x, ostatnio: PoczątkowyJEE, 2012-12-09 00:52

Pozostało 580 znaków

2012-12-09 10:33
0

Nie ogarniam. Na jednej tabeli mi chodzi a na innej wywala:/
Na tym działa

@Entity
@Table(name="osoba")
public class Osoba implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    private int id;
    private String imie;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getImie() {
        return imie;
    }
    public void setImie(String imie) {
        this.imie = imie;
    }
    public Osoba() {
        super();
    }

tak wyciagam coś z bazy List<Osoba> os = em.createQuery("SELECT r FROM Osoba r").getResultList();
to działa dostaje jakiś zwrot.
Natomiast na większej tabeli w innej bazie już nie działa
teraz mam taki obiekt

@Entity
@Table(name="STUDENT")
class Student implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    @Column(name="ID")
    private int id;
    @Column(name="INDEKS")
    private int indeks;
    @Column(name="IMIE")
    private String imie;
    @Column(name="NAZWISKO")
    private String nazwisko;
    @Column(name="MIEJSCE_UR")
    private String miejsceUr;
    @Column(name="DATA_UR")
    private String dataUr;
    @Column(name="ULICA")
    private String ulica;
    @Column(name="MIEJSCOWOSC")
    private String miejscowosc;
    @Column(name="NUMER_DOMU")
    private int numerDomu;
    @Column(name="KOD_POCZTOWY")
    private String kodPocztowy;
    @Column(name="POCZTA")
    private String poczta;
    @Column(name="EMAIL")
    private String email;
    @Column(name="KIERUNEK_STUDIOW")
    private String kierunekStudiow;
    @Column(name="TELEFON")
    private String telefon;
    @Column(name="SPECJALNOSC")
    private String specjalnosc;

    public Student() {
        super();
    }

... getery setery 

wyciagam tak samo jak w przypadku działającym
List<Student> os = em.createQuery("SELECT r FROM STUDENT r").getResultList();

No i ja osobiście nie dostrzegam dlaczego tak jest:/

Edit:
Chyba znalazłem bląd tylko nie wiem dlaczego to niby przez to nie działa. Chodzi o adnotacje do nazwy kolumny. Gdy jej nie ma działa. Gdy jest sypie się że nie może dokonać mapowania.

Edit:
zapisałem tak
List<student> os = this.em.createQuery("SELECT a FROM "+"jee.mw.encje.Student"+ " a ").getResultList();
i zadziałało. nie mam pojecia dlaczego mimo ze inny obiekt tez w tym pakiecie był i był znajdywany a tutaj takie kwiatki się dzieja

edytowany 2x, ostatnio: PoczątkowyJEE, 2012-12-09 13:29

Pozostało 580 znaków

2012-12-09 14:10
0

Nie wiem czemu akurat tak ci się dzieje, ale moja rada jest dość prosta: używaj Criteria zamiast takiego ręcznego sklejania stringów ;)


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-12-09 14:29
0

Już zbliżam się do kresu wytrzymałości nerwowej pod MySQL działa pod PostgreSQL już nie.

Pozostało 580 znaków

2012-12-09 14:42
0

A bierzesz pod uwagę to że nazwy kolumn mogą być case-sensitive? Na przykład Oracle z automatu zakłada ze jesli nazwa kolumny nie jest w "" to jest pisana cała dużymi literkami...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-12-09 15:03
0

Ja już takie kombinacje alpejskie zacząłem robić a i tak cholerstwo nie chce ruszyć|:/

Pozostało 580 znaków

2012-12-09 15:20
0

jakie to jest gó*no straszne. teraz jednak namiar na taele powinien być bez nazwy pakietu. Kur... to jaki sens ma JPA skoro i tak pod każdą bazę trzeba przeróbki robić i nie działa to tak jak rzekomo miało czyli 1 konfiguracji i dalej tylko persistence.xml ewentualnie a kod miał być ciagle ten sam.

Pozostało 580 znaków

2012-12-09 15:26
0
  1. Ponawiam propozycję - używaj Criteria
  2. Ja nigdy nie musiałem specyfikować pakietu w takiej sytuacji i zgaduje że nazwy tabel miałeś inne po prostu (np. z innym casem)

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-12-09 15:38
0

Zaraz wezme to ogarne od podstaw i dam znać co było problemem

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0