Я работаю с EclipseLink и JPA 2.0.Каскадирование не работает в oneToMany, с eclipseLink
Это мои 2 лица:
Feeder объектные:
@Entity
@Table(name = "t_feeder")
public class Feeder implements Serializable {
private static final long serialVersionUID = 1L;
//Staff
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idAttachedFeederFk")
private Collection<Port> portCollection;
//staff
}
Порт лицо:
@Entity
@Table(name = "t_port")
public class Port implements Serializable {
//staff
@JoinColumn(name = "id_attached_feeder_fk", referencedColumnName = "id")
@ManyToOne
private Feeder idAttachedFeederFk;
//staff
}
И это мой код:
Feeder f = new Feeder();
//staff
Port p = new Port();
p.setFeeder(f);
save(feeder); //This is the function that calls finally persist.
Проблема в том, что сохраняется только фидер, а не порт. Я что-то упускаю? И особенно, с какой стороны я должен упомянуть о каскадировании точно. Учитывая, что в моей базе данных порт таблица ссылается на фидер с внешним ключом.
EDIT
Этот простой фрагмент кода работает хорошо со мной:
public static void main(String[] args) {
Address a1 = new Address();
a1.setAddress("madinah 0");
Employee e1 = new Employee();
e1.setName("houssem 0");
e1.setAddressFk(a1);
saveEmplyee(e1);
}
Да, вам не хватает того, что Feeder ничего не знает об этом новом Port.Call feeder.getPortCollection(). Add (p) перед сохранением и он будет работать. Я также рекомендовал бы инкапсулировать эти операции, как описано здесь. http://stackoverflow.com/questions/19840832/netbeans-not-filling-junction-table-using-hibernate/19855604#19855604 –
Но фидер еще не управляется! –
Извините, я не понимаю. Ответ, который я дал, верен. –