2013-07-29 1 views
1

Iam은 EJB-JPA-JSF 프로젝트를 개발 중입니다. 그러나 나는 문제가있다. 나는이 쿼리에 대한 오류를 얻을 :JPA-Hibernate-EJB : 지정된 식별자를 가진 행이 두 개 이상 발견되었습니다.

select u from Ucretlendirme u join u.tarife_KullanimTipiServis tks join tks.kullanimTipiServis ks join ks.servis s join tks.tarife t join ks.kullanimTipi k where s.servisID=:sID and t.tarifeID=:tID and k.kullanimTipiID=:kID 

Error: javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.HibernateException: More than one row with the given identifier was found: 1, for class: tr.com.vodafone.optimum.entities.Period 

가 어떻게이 오류를 해결할 수

@Entity 
public class Period { 
    ... 
@ManyToOne 
private PeriyodType periodType; 
@OneToOne(mappedBy="period") 
private Ucretlendirme ucretlendirme; 
} 

@Entity 
public class PeriyodType { 
.... 
@OneToMany(mappedBy="periodType",fetch=FetchType.LAZY) 
private List<Period> periyodlar; 
} 

데이터베이스에서
@Entity 
public class Servis { 
@OneToMany(mappedBy="servis",fetch=FetchType.LAZY) 
private List<KullanimTipi_Servis> kullanimtipi_servisler; 
} 

@Entity 
public class KullanimTipi { 
.... 
@OneToMany(mappedBy="kullanimTipi",fetch=FetchType.LAZY) 
private List<KullanimTipi_Servis> kullanimtipi_servisler; 
} 
+0

HQL 쿼리는 동일한 ID를 가진 중복 된 엔티티를 반환해야합니다. SQL 로깅을 활성화하고 select를 손으로 실행하고 반환 할 내용을 확인하십시오. – Ammar

+0

감사합니다.이 문제를 해결합니다. 나는 자리를 놓쳤다. 인스턴스 저장시, ı는 각각 인스턴스 인스턴스를 저장해야합니다. 내가 틀렸어. –

답변

-1

@Entity 
public class KullanimTipi_Servis { 
@ManyToOne 
private KullanimTipi kullanimTipi; 
@ManyToOne 
private Servis servis; 
@OneToMany(mappedBy="kullanimTipiServis",fetch=FetchType.LAZY) 
private List<Tarife_KullanimTipiServis> tarife_kullanimtipiservisler; 
} 



@Entity 
public class Tarife { 
@OneToMany(mappedBy="tarife",fetch=FetchType.LAZY) 
private List<Tarife_KullanimTipiServis> tarife_kullanimtipiservisler; 
} 
@Entity 
public class Tarife_KullanimTipiServis { 
    .... 
@ManyToOne 
private Tarife tarife; 
@ManyToOne 
private KullanimTipi_Servis kullanimTipiServis; 
@OneToOne 
private Ucretlendirme ucretlendirme; 
} 
@Entity 
public class Ucretlendirme { 
... 
@OneToOne 
private Period period; 
@OneToOne(mappedBy="ucretlendirme") 
private Tarife_KullanimTipiServis tarife_KullanimTipiServis; 
} 

당신은 데이터가 추가 반비례 관계가있는 테이블이있다. 예를 들어 테이블 관계는 1 대 1이지만 테이블 데이터는 많은 것과 같습니다.이 행처럼 삭제해야합니다.

+0

참조하는 테이블과 관계에 대한 세부 정보를 추가하십시오. –

관련 문제