В проекте 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;

Моя проблема связана только с внешним ключом..

  1. В базе данных [ticket_details] есть [loginId] Клиента, который у меня есть, потому что у меня есть первичный ключ ticket_details, т.е. [TicketId],

  2. Клиент имеет один [LoginID], а также [ClientId], и

  3. Где в качестве базы данных [Client_Detail] клиент имеет [loginId] в качестве внешнего ключа, а [ClientId] является его первичным ключом.

  4. Итак, что мне нужно сделать, это с помощью базы данных [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,

Другие вопросы по тегам