2016-08-22 6 views
-1

JPA2/Hibernate5とMySQLでJava 8を使用しています。java.lang.Longフィールドcom.jobs.spring.domain.Employee.idをjava.lang.Longに設定できません

私は以下を取得していますエラー、すべての助けに感謝します。

PropertyAccessException: Error accessing field [private java.lang.Long com.jobs.spring.domain.Employee.id] by reflection for persistent property [com.jobs.spring.domain.Employee#id] : 31 

IllegalArgumentException: Can not set java.lang.Long field com.jobs.spring.domain.Employee.id to java.lang.Long 

テーブル

+--------+ +----------------+ +----------+ 
| Rating | | Rating_Employee| | Employee | 
+--------+ +----------------+ +----------+ 
| ID  | | RAT_ID   | | ID  | 
| REVIEW | | EMP_ID   | +----------+ 
+--------+ +----------------+  

コード

@Override 
public List<Rating> findAll(int firstResult, int maxResults, Long employeeId) { 
    final EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory(); 
    final CriteriaBuilder criteriaBuilder = entityManagerFactory.getCriteriaBuilder(); 
    CriteriaQuery<Rating> criteria = criteriaBuilder.createQuery(Rating.class); 
    Root<Rating> root = criteria.from(Rating.class); 
    ParameterExpression<Long> param = criteriaBuilder.parameter(Long.class); 
    criteria.select(root).where(criteriaBuilder.equal(root.get("employee"), param)); 
    TypedQuery<Rating> queryRating = entityManager.createQuery(criteria); 
    queryRating.setParameter(param, employeeId); 
    List<Rating> results = queryRating.getResultList(); 

    return results; 
} 

モデル(Rating.java)

@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER) 
@JoinTable 
(
    name="rating_employee", 
    joinColumns={ @JoinColumn(name="RAT_ID", referencedColumnName="ID") }, 
    inverseJoinColumns={ @JoinColumn(name="EMP_ID", referencedColumnName="ID") } 
) 
private Employee employee; 

モデル(Employee.java)解決しよう

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 

答えて

0

は、Employeeオブジェクトを使用する必要はありませんロング社員:

ParameterExpression<Employee> param = criteriaBuilder.parameter(Employee.class); 
.. 
queryRating.setParameter(param, employee); 
関連する問題