2016-07-01 2 views
-1

Der Lehrer aus meiner Java-Coding-Klasse hat auf seiner Webseite ein Beispiel dafür veröffentlicht, was er von uns erwartet. Als ich versuchte, den gleichen Code in meinem eigenen Labor nachzubauen, hatte ich jedoch einige Fehler. Hier ist der Code:Mehrere Probleme beim Versuch, den gleichen Code aus einem anderen Projekt zu schreiben

public class StudentRepositoryImpl extends Repository<Student, Long> implements StudentRepositoryCustom { 
private static final Logger log = LoggerFactory.getLogger(StudentRepositoryImpl.class); 

public StudentRepositoryImpl() 
{ 
    super(Student.class); 
} 

@Override 
@Transactional 
public List<Student> findAllWithLabsSqlQuery() 
{ 
    log.trace("findAllWithLabsSqlQuery: method entered"); 

    HibernateEntityManager hibernateEntityManager = getEntityManager().unwrap(HibernateEntityManager.class); 
    Session session = hibernateEntityManager.getSession(); 

    Query query = session.createSQLQuery("select distinct {s.*}, {sd.*}, {d.*}" + 
      " from student s" + 
      " left join student_lab sd on sd.student_id = s.id" + 
      " left join lab d on d.id = sd.lab_id") 
      .addEntity("s", Student.class) 
      .addJoin("sd", "s.studentLabs") 
      .addJoin("d", "sd.lab") 
      .addEntity("s", Student.class) 
      .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
    List<Student> students = query.list(); 

    log.trace("findAllWithLabsSqlQuery: students={}", students); 
    return students; 
} 

@Override 
@Transactional 
public List<Student> findAllWithLabsJpql() { 
    log.trace("findAllWithLabsJpql: method entered"); 

    javax.persistence.Query query = getEntityManager().createQuery("select distinct s from Student s" + 
      " left join fetch s.studentLabs sd" + 
      " left join fetch sd.lab d"); 

    List<Student> students = query.getResultList(); 

    log.trace("findAllWithLabsJpql: students={}", students); 
    return students; 
} 

@Override 
@Transactional 
public List<Student> findAllWithLabsJpaCriteria() { 
    log.trace("findAllWithLabsJpaCriteria: method entered"); 

    CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder(); 
    CriteriaQuery<Student> query = criteriaBuilder.createQuery(Student.class); 

    query.distinct(Boolean.TRUE); 

    Root<Student> from = query.from(Student.class); 

    Fetch<Student, StudentLab> studentLabFetch = from.fetch(Student_.studentLabs, JoinType.LEFT); 
    studentLabFetch.fetch(StudentLab_.discipline, JoinType.LEFT); 

    List<Student> students = getEntityManager().createQuery(query).getResultList(); 

    log.trace("findAllWithLabsJpaCriteria: students={}", students); 
    return students; 
} 

}

Die Fehler Ich bin vor sind:

1 - die Super-Methode ("Kann nicht lösen Methode 'Super (java.lang.Class)'")

2 - jede getEntityManager Funktion ("Kann nicht lösen Methode 'getEntityManager'")

3 - die "Student_" und "StudentLab_" ("Can not Symbol auflösen")

In seinem Projekt funktioniert derselbe Code, wenn auch mit Änderungen des Klassennamens. Hat es etwas mit den .iml oder pom.xml Dateien zu tun?

Hier sind die importierten Bibliotheken:

import org.hibernate.Criteria; 
import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.jpa.HibernateEntityManager; 
import org.hibernate.jpa.internal.EntityManagerFactoryImpl; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.transaction.annotation.Transactional; 
import javax.persistence.criteria.*; 
import java.util.List; 

import ro.ubb.books.core.model.*; 
import ro.ubb.books.core.repository.*; 
+0

Sie müssen die erforderlichen Bibliotheken importieren. –

Antwort

0

Wenn Sie auch pom.xml kopiert haben, versuchen Sie folgenden Befehl ausführen.

mvn clean package 

Hinweis: mvn (maven) muss installiert sein.

+0

In welchem ​​Ordner muss ich diesen Befehl ausführen? Der Ordner, in dem sich die Datei pom.xml befindet, oder der Ordner für das gesamte Projekt? –

+0

Sie müssen diesen Befehl ausführen, wo sich 'pom.xml' befindet. –

+0

Das schien das Problem nicht zu beheben. Dieselben Fehler bleiben bestehen. –

Verwandte Themen