Я пытаюсь создать приложение адресной книги с одной таблицей для людей, другой для компаний и третьей для телефонов. Таблица «Телефоны» будет содержать данные о людях и компаниях с полем, в котором указано, откуда они пришли. Предположим, что это простые таблицы:
CREATE TABLE `Person` {
`id` int(11) NOT NULL auto_increment,
`firstName` varchar(80) NOT NULL,
`lastName` varchar(80) NOT NULL
}
CREATE TABLE `Company` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL
}
CREATE TABLE `ContactPhone` (
`id` int(11) NOT NULL auto_increment,
`contactType` char(1) NOT NULL, -- either 'P' or 'C'
`contactId` int(11) NOT NULL, -- the id of the Person or Company
`number` varchar(40) NOT NULL
}
Я создал соответствующие им классы Java, которые очень просты:
public class Person {
private Integer id;
private String firstName;
private String lastName;
private Collection<Phone> phones;
// ...
}
public class Company {
private Integer id;
private String name;
private Collection<Phone> phones;
// ...
}
public class Phone {
private Integer id;
private String number;
// ...
}
В простом SQL я могу очень легко получить человека и соответствующие телефоны. Мне нужно создать отображение между Person и Phone и между Company и Phone, используя обычный режим гибернации (без аннотаций), но я не могу заставить его работать. Даже не уверен, должен ли он быть однонаправленным или двунаправленным. Я искал документацию, но не нашел ничего, что могло бы помочь. Кто-нибудь?