Я пытаюсь создать простую службу Rest, в которой я могу добавлять Клиентов и обновлять их, в основном как опыт изучения технологий Java EE. Я запускаю это приложение в TomEE и использую Eclipse и Maven для кодирования и сборки.OpenJPA @OneToMany Список, возвращающий null
В моем проекте у меня есть основной класс Entity, который мы будем называть «Клиенты». С клиентом у вас может быть несколько местоположений и несколько контактов, поэтому у меня есть обе эти настройки как однонаправленное отображение сущностей, используя @OneToMany. Я могу сгенерировать Клиента с отображением адреса и контактов, причем каждая из этих таблиц имеет идентификатор, соответствующий обратному клиенту. Когда я перехожу к просмотру данных, все данные в «Клиенте» есть, но только значение NULL для «Адреса» и «Контакты». Я использую EJB в качестве Менеджера сущностей и имею настройку CriteriaQuery для получения данных.
Client.java
@Entity
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="vendor_id", referencedColumnName="id")
private List<ClientAddress> addresses
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="vendor_id", referencedColumnName="id")
private List<ClientContact> contacts
...
ClientAddress.java
@Entity
public class ClientAddress {
...
}
ClientContacts.java
@Entity
public class ClientContacts {
...
}
ClientEntityBroker.java
@Stateless
@Localbean
public class VendorEntityBroker {
@PersistenceContext(unitName = "client-mysql",
type=PersistenceContextType.TRANSACTION)
private EntityManager em;
public List<Vendor> getAllClients() {
CriteriaQuery<Client> cq = em.getCriteriaBuilder().createQuery(Client.class);
cq.select(cq.from(Client.class));
return em.createQuery(cq).getResultList();
}
...
}
У меня нет аннотации @ManyToOne в ClientAddress или ClientContacts с момента его однонаправленного сопоставления. Записи базы данных все создаются, но я, похоже, не могу найти адрес и контактные данные, как я ожидал. Я новичок в этом, поэтому я предполагаю, что я могу запросить данные неправильно или есть что-то лишнее на вкладке, чтобы он мог правильно отобразить запрос.
Я запускаю OpenJPA 2.4 и TomEE 1.7.2.