Hibernate, Oracle, последовательность и проблема один ко многим - PullRequest
0 голосов
/ 24 февраля 2011

У меня проблема с сохранением одной строки для объекта «один ко многим». Этот внешний ключ не заполняется в дочерних объектах. Разве они не должны автоматически переходить из Hibernate? BadgeID никогда не вставляется в BadgeLevel.BadgeID.

Badge.java

@Basic
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="BADGE_SEQUENCE")
@SequenceGenerator(name="BADGE_SEQUENCE", sequenceName = "BADGE_SEQUENCE")
@Column(name = "ID", nullable=false, unique=true)
    public Long getId() {
    return id;
}

@OneToMany(mappedBy="badge", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@Fetch(value=FetchMode.SELECT)
public List<BadgeLevel> getBadgeLevels() {
   return this.badgelevels;
}

BadgeLevel.java

@Basic
@Id
@NotNull
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="BADGELEVEL_SEQUENCE")
@SequenceGenerator(name="BADGELEVEL_SEQUENCE", sequenceName = "BADGELEVEL_SEQUENCE")
@Column(name = "ID", nullable=false, unique=true)
    public Long getId() {
    return id;
}

@ManyToOne()
@JoinColumn(name = "BADGEID")
public Badge getBadge() {
    return this.badge;
}

/**
 * set badge
 */
public void setBadge(Badge badge) {
    this.badge = badge;
}

1 Ответ

0 голосов
/ 24 февраля 2011

Перед вызовом сохранения на Badge, попробуйте следующее

......

for(BadgeLevel badgeLevel : badge.getBadegeLevels()
{
   badgeLevel.setBadge(badge);
}
repo.save(badge);
...