모델이 있습니다. 이 부분이 있습니다 : hibernate.hbm2ddl.auto = update가 작동하지 않습니다.
모델은 jpa annotations.Everywhere로 매핑되었습니다. fetchType = EAGER를 사용합니다. 데이터베이스에서 공석을로드하는 경우 status_for_vacancy 개체가 두 개 중복됩니다. 속성 hbm2ddl.auto = update를 사용합니다. 데이터베이스의 새 스키마를 만들고 데이터를 채우는 경우 status_for_vacancy 개체가 중복되지 않았습니다. 정말요?
코드 : 공석 :
@Entity
@Table(name = "vacancy")
@XmlRootElement(name="vacancy")
public class Vacancy {
private List<VacancyStatus> statusList = new LinkedList<VacancyStatus>();
@OneToMany(mappedBy = "vacancy", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public List<VacancyStatus> getStatusList() {
return statusList;
}
public void setStatusList(List<VacancyStatus> statusList) {
this.statusList = statusList;
}
}
status_for_vacancy :
@Entity
@Table(name = "status_for_vacancy")
public class StatusForVacancy extends AbstractStatus {
public StatusForVacancy() {
super();
}
public StatusForVacancy(Integer id, String name) {
super(id, name);
}
}
@MappedSuperclass
@XmlRootElement
public abstract class AbstractStatus {
private Integer id;
private String name;
public AbstractStatus() {
super();
}
public AbstractStatus(String name) {
super();
this.name = name;
}
public AbstractStatus(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column (name ="id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "name")
@NotEmpty
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
vacancy_status :
@Entity
@Table(name = "vacancy_status")
public class VacancyStatus extends AbstractHistoryStatus {
private Vacancy vacancy;
private StatusForVacancy status;
public VacancyStatus() {
super();
}
public VacancyStatus(Integer id, User author, Date date,
Vacancy vacancy, StatusForVacancy status) {
super(id, author, date);
this.vacancy = vacancy;
this.status = status;
}
@ManyToOne
@JoinColumn(name = "vacancy_id")
public Vacancy getVacancy() {
return vacancy;
}
public void setVacancy(Vacancy vacancy) {
this.vacancy = vacancy;
}
@ManyToOne
@JoinColumn(name = "status_id")
public StatusForVacancy getStatus() {
return status;
}
public void setStatus(StatusForVacancy status) {
this.status = status;
}
}
@MappedSuperclass
public abstract class AbstractHistoryStatus {
private Integer id;
private User author;
private Date date;
public AbstractHistoryStatus() {
}
public AbstractHistoryStatus(Integer id, User author, Date date) {
super();
this.id = id;
this.author = author;
this.date = date;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToOne
public User getAuthor() {
return author;
}
public void setAuthor(User author) {
this.author = author;
}
@Column(name="creation_date")
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
,
이 엔티티의 모든 매핑 코드입니다. 디버거
:
ID 모두 == 500 ==>는 동일한 객체임을 이해 동면.
나는 새 데이터베이스 이전 데이터베이스에서 모든 데이터를 추가하려고 - (
나는이 문제의 출현의 원인을 해결 나는 오래된 오류가 그것의 모습을 내가 주목하는 기록을 추가하면 테이블 :.
이 엔티티를 나타내는 개체 코드를 제공 할 수 있습니까? status_for_vacancy 코드는 무엇입니까? 이 객체에 대해 equals() 및 hashCode() 메서드를 어떻게 정의 했습니까? – lostdorje
standart hashcode 및 equals 메서드를 다시 작성하지 마십시오 –
토픽에 소스 코드 추가 –