2016-07-01 7 views
-1

私のJavaコーディングクラスの先生は、彼自身のためにコーディングすると期待しているものの例を彼のウェブページに公開しています。私自身の研究室で同じコードを再現しようとしたとき、私はいくつかのエラーに直面していました。ここでは、コードは次のようになります。別のプロジェクトから同じコードを書くときのいくつかの問題

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; 
} 

}

私が直面していますエラーは次のとおりです。

1 - スーパー法( "法 'スーパー(のjava.lang.Class)' を解決できません")

2 - すべてのgetEntityManager機能( "メソッドを解決できません 'getEntityManager'")

3 - "Student_" と "StudentLab_"( "シンボルを解決できません")

彼のプロジェクトでは、クラス名を変更しても同じコードが動作します。それは.imlやpom.xmlファイルと関係がありますか?ここで

は、インポートライブラリです:

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

必要なライブラリをインポートする必要があります。 –

答えて

0

あなたものpom.xmlをコピーした場合は、以下のコマンドを実行してみてください。

mvn clean package 

注:mvn(maven)がインストールされている必要があります。

+0

このコマンドを実行するにはどのフォルダに移動する必要がありますか? pom.xmlファイルがあるフォルダ、またはプロジェクト全体のフォルダ? –

+0

'pom.xml'があるところでこのコマンドを実行する必要があります。 –

+0

それは問題を解決していないようでした。同じエラーが続く。 –

関連する問題