Я не могу решить это так, как хочу в Hibernate.Вот оно: у меня есть продукт, у каждого продукта есть свои поля и так далее.Каждый продукт может быть либо продуктом верхнего уровня, либо вторичным продуктом.Вторичный продукт будет связан с продуктом верхнего уровня, продукт верхнего уровня будет связан ни с чем.Когда я запрашиваю продукт из базы данных, я хотел бы знать, является ли он TopLevel или нет.Список связанных вторичных продуктов можно получить позже (или даже раньше, но это не так необходимо).
Я думал об использовании этого bean-компонента:
public class Product{
...properties..
Product topLevelProduct;
...getters and setters...
}
Проблема в том, что если я сопоставлю свойство topLevelProduct как многие-к-одному, у меня возникнут проблемы с удалением продуктов верхнего уровня.На самом деле, если с ними связаны вторичные продукты, я получаю:
java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`jacciseweb`.`prodotti`, CONSTRAINT `FKC803BB11ACD3B812` FOREIGN KEY (`prodottoDiRiferimento_ID`) REFERENCES `prodotti` (`ID`))
. Я ожидаю, что если я удалю TopLevelProduct, будет также удален secondLevelProducts.Должен ли я использовать другую структуру?Может быть, с использованием двух бобов, полученных из одного и того же?Или поменять отношения следующим образом:
public class Product{
...properties..
List<Product> secondLevelProducts = new ArrayList<Product>();
...getters and setters...
}
В любом случае это вызывает у меня проблему: мне нужно использовать другой запрос, чтобы узнать, является ли продукт вторичным или нет, потому что просто зная, что у него нет никакого вторичного продукта,это не значит, что он вторичен, это может быть даже продукт высшего уровня, у которого нет продуктов второго уровня.
Идеи?