2012-02-20 2 views
-3
@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 естьпроисходивших HibernateException в JPA

 
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], для класса: model s.Town

Я пытаюсь изменить значение DataBase,

города

towncode | название города | городской код 123 | AAA | 12345

456 | BBB | 67890

789 | CCC |

тогда, Teh ошибка не произошло ...

, но я хочу, чтобы не изменить это значение. Кто-нибудь знает решение этого?

+0

Ваше сопоставление не имеет никакого смысла. Вы не можете использовать ManyToOne в поле типа List. Если это список, это означает, что существует несколько объектов, поэтому это может быть OneToMany или ManyToMany, но не ManyToOne. Более того, если у вас есть список городов, поле должно быть названо «городами», а не «городом». Это уменьшит путаницу. –

+0

thanks.I отредактировал it.but, ошибка не удалена ... – user1212872

+0

Вы не настроили идентификатор своих объектов. И запрос неверен, поскольку поле называется «zipCode», а не «zipcode» –

ответ

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; 

} 
Смежные вопросы