在JPA中发生了HibernateException

时间:2012-02-20 09:12:03

标签: java jpa

@Entity
public class ZipCode extends GenericModel {

public String zipCode;
public String townCode;
@ManyToOne(targetEntity=Town.class,fetch=LAZY)
@JoinColumn(referencedColumnName="townCode",name="townCode",nullable=true,insertable=false,updatable=false)
public Town town;
}



@Entity
public class Town extends GenericModel {
public String townCode;
public String townName;
public String cityCode;
@ManyToOne(targetEntity=City.class,fetch=LAZY)
@JoinColumn(referencedColumnName="cityCode",name="cityCode",nullable=true,columnDefinition="city",insertable=false,updatable=false)
public City city;
}


@Entity
public class City extends GenericModel {
public String cityCode;
public String cityName;
public String prefectureCode;
@ManyToOne(targetEntity=Prefecture.class,fetch=LAZY)
@JoinColumn(referencedColumnName="prefectureCode",name="prefectureCode",nullable=true,columnDefinition="prefecture",insertable=false,updatable=false)
public Prefecture prefecture;
}


@Entity
public class Prefecture extends GenericModel {
public String prefectureCode;
public String prefectureName;
}

DataBase是,

ZipCode

zipcode | towncode

111     | 123

222     | 456


Town

towncode | townname | citycode
123      | AAA      | 12345

456      | BBB      | 67890

789      | CCC      | 12345


City

citycode | cityname | prefecturecode

12345    | XXX      | 12

67890    | YYY      | 34


Prefecture

prefecturecode | prefecturename

12             | MMM

34             | NNN

并执行此操作,

List<ZipCode> zipCodes = ZipCode.find("zipcode = 111").<ZipCode>fetch();

发生此错误,

  

org.hibernate.HibernateException:找到了多个具有给定标识符的行:Town [null],用于类:models.Town

我尝试更改DataBase值,

城镇代码| townname | citycode 123 | AAA | 12345

456 | BBB | 67890

789 | CCC |的 12321

然后,没有发生错误...

但是,我想不要改变这个值。 有谁知道这个的解决方案?

1 个答案:

答案 0 :(得分:0)

可能你可以试试这个。

@Entity
public class Town extends GenericModel {

    public String townCode;

    public String townName;

    public String cityCode;

}


@Entity
public class City extends GenericModel {

    public String cityCode;

    public String cityName;

    public String prefectureCode;

    @ManyToOne(targetEntity=Prefecture.class,fetch=LAZY)
    @JoinColumn(referencedColumnName="prefectureCode",name="prefectureCode",nullable=true,columnDefinition="prefecture",insertable=false,updatable=false)

public Prefecture prefecture;

    @OneToMany(targetEntity=Town.class,fetch=LAZY)
    @JoinColumn(referencedColumnName="townCode",name="townCode",nullable=true,columnDefinition="city",insertable=false,updatable=false)

public List<Town> towns;

}