В проекте Hibernate J2EE Strutrs 2: невозможно получить объект ORM класса Pojo с внешним ключом? Является ли это возможным?
Session s=HibernateUtil.getSession();
TicketDetails td=(TicketDetails)s.get(TicketDetails.class,ticketId);
TicketDetail является объектом класса POJO и отлично работает с первичным ключом. *
ClientDetails cd=(ClientDetails)s.get(ClientDetails.class,
td.getLoginDetails().getLoginId());
ClientDetail также является объектом класса POJO, и я получаю сообщение об ошибке с внешним ключом здесь td.getLoginDetails(). GetLoginId()*
Как получить объект ClientDetail с этим внешним ключом?
Общая структура класса POJO ClientDetail:
public class ClientDetails implements java.io.Serializable {
private Integer clientId;
private LoginDetails loginDetails;
private String firstName;
private String lastName;
private String passwd;
private String address;
private String city;
Моя проблема связана только с внешним ключом..
В базе данных [ticket_details] есть [loginId] Клиента, который у меня есть, потому что у меня есть первичный ключ ticket_details, т.е. [TicketId],
Клиент имеет один [LoginID], а также [ClientId], и
Где в качестве базы данных [Client_Detail] клиент имеет [loginId] в качестве внешнего ключа, а [ClientId] является его первичным ключом.
Итак, что мне нужно сделать, это с помощью базы данных [Ticket_Detail] у меня есть [идентификатор входа клиента], и вместе с ним мне нужно получить клиентский [ClientId] и из базы данных [Client_details] через [LoginId] клиента, который является внешним ключом для этого. (и, очевидно, на данный момент у меня нет [первичного ключа client_details]).
если я не могу сделать это, то какова цель создания внешнего ключа в базе данных???
1 ответ
Вы не можете сделать это, вам нужен первичный ключ ClientDetail
,
Так что вы можете сделать
ClientDetails cd=(ClientDetails)s.get(ClientDetails.class, clientId);
Вы также можете сделать, если LoginDetails
первичный ключ id
, затем вы можете получить другие ключи после загрузки.
LoginDetails loginDetails =(LoginDetails)s.get(LoginDetails.class, td.getLoginDetails().getId());
ClientDetails cd=(ClientDetails)s.get(ClientDetails.class, loginDetails.getLoginId());
Внешние ключи по умолчанию ленивы, но вы можете изменить их, если необходимо, принудительно извлекая связанные сущности. Для этого вы должны настроить атрибут fetch на FetchType.EAGER
,