JPA-Hibernate-EJB:找到了具有给定标识符的多个行

时间:2013-07-29 13:20:39

标签: hibernate jpa-2.0 uniqueidentifier one-to-one

我正在开发EJB-JPA-JSF项目。但我有一个问题。我收到此查询的错误:

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 Ucretlendirme {
...
@OneToOne
private Period period;
@OneToOne(mappedBy="ucretlendirme")
private Tarife_KullanimTipiServis tarife_KullanimTipiServis;
}

@Entity
public class Tarife_KullanimTipiServis {
    ....
@ManyToOne
private Tarife tarife;
@ManyToOne 
private KullanimTipi_Servis kullanimTipiServis;
@OneToOne
private Ucretlendirme ucretlendirme;
}

@Entity
public class Tarife {
@OneToMany(mappedBy="tarife",fetch=FetchType.LAZY)
private List<Tarife_KullanimTipiServis> tarife_kullanimtipiservisler;
}

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

1 个答案:

答案 0 :(得分:-1)

在您的数据库中,您有一个表,其中添加了反向关系数据。 例如,你的表relaiontionship是多对一的,但你的表数据就像很多对很多。你必须像这些行一样删除。