Последние 4 часа я отчаянно пытаюсь выполнить следующую картографическую работу.Hibernate не удается отобразить картографическую карту с помощью ManyToMany
@Entity
public class Foo {
@Basic
private String bar;
@Id
@Column(name = "FOO_ID")
@Type(type = "foo.bar.OracleGuidType")
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private UUID id;
@ManyToMany(mappedBy = "parentFoos", fetch = FetchType.EAGER)
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
@MapKeyColumn(name = "NESTED_FOO_KEY")
private Map<String, Foo> nestedFoos = new
HashMap<String, Foo>();
@ManyToMany
@JoinTable(
name = "FOO_RELATIONSHIP",
joinColumns = @JoinColumn(name = "NESTED_FOO_ID",
referencedColumnName = "FOO_ID"),
inverseJoinColumns = @JoinColumn(name = "PARENT_FOO_ID",
referencedColumnName = "FOO_ID")
)
private Set<Foo> parentFoos = new HashSet<Foo>();
//getters/setters
}
Отображение может быть сложным, но это то, что требования.
Проблема заключается в том, что, когда я пытаюсь сделать следующее
Foo parent = new Foo();
parent.setWhatever("parent");
Foo child = new Foo();
child.setWhatever("child");
Session currentSession = sessionFactory.getCurrentSession();
Transaction tx = currentSession.getTransaction();
tx.begin();
currentSession.saveOrUpdate(child);
tx.commit();
currentSession = sessionFactory.getCurrentSession();
tx = currentSession.getTransaction();
tx.begin();
child.getParentFoos().add(parent);
parent.getNestedFoos().put("ASDF_KEY", child);
currentSession.saveOrUpdate(parent);
tx.commit();
что я получаю это:
гибернации: (?,) Вставить в Foo (независимо, FOO_ID) значений
Hibernate : вставить в Foo (независимо, FOO_ID) значения (?,?)
Спящий режим: обновить Foo set whatever =? где FOO_ID =?
Hibernate: вставить в FOO_RELATIONSHIP (NESTED_FOO_ID, PARENT_FOO_ID) значения
Это кажется, что спящий режим игнорирует mapkeycolumn (хотя он создает один через hbm2ddl) и то, что я получаю следующий это исключение
Вызванный: java.sql.BatchUpdateException: ORA-01400: Не удается вставить NULL в (. "BAR" "FOO_RELATIONSHIP" "NESTED_FOO_KEY".)
Я считаю, что этот объект можно отобразить , Пожалуйста, помогите мне решить эту проблему.
Пожалуйста, вывесить структуру таблицы. –