Я пытаюсь передать набор сущностей JPA от бизнес-уровня до уровня представления. Все развертывается на одном сервере приложений (Glassfish 4). Клиент развертывается как .war-файл, а Business Tier - как .ear с ejb, доступным через интерфейс Remote.Сущность JPA неправильно передается от EJB до уровня представления
Для этого у меня есть эти очень простые методы, с абсолютно никакой логики:
Client
public List<CompletedDesign> selectCompletedDesigns() {
try {
List<CompletedDesign> designs = customerFacade.selectCompletedDesigns();
return designs;
} catch (EJBException e) {
e.printStackTrace();
}
return null;
}
И в EJB
// EJB
@Override
@RolesAllowed("customer")
public List<CompletedDesign> selectCompletedDesigns() {
final Principal callerPrincipal = sessionCtx.getCallerPrincipal();
String name = callerPrincipal.getName();
Customer customer = dataXchangeBean.getCustomerByID(name);
List<CompletedDesign> cds = customerBean.selectCompletedDesigns(customer);
return cds;
}
Final это фрагмент JPA Entity ,
@Entity
@Table(name = "COMPLETED_DESIGN")
@NamedQueries({......})
public class CompletedDesign implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "ID")
private String id;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "NAME")
private String name;
@Column(name = "STATUS")
private DesignStatus status;
@JoinColumn(name = "CUSTOMER_FK", referencedColumnName = "ID")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Customer customerFk;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "designFk", fetch = FetchType.LAZY)
private List<Product> products;
Поставив точку останова можно увидеть cds
список правильно извлекается в стороне EJB. Самый первый вопрос: почему я получаю вектор вместо списка? Я использую TypedQuery со стороны JPS, и это должно было правильно отобразить объект.
Однако моя основная проблема заключается в следующем: в последующей точке останова на самом клиентском классе в уровне представления, кажется, что он не может полностью восстановить объект, значения всего нуль, и типа отсутствует. Что мне здесь не хватает?
Ненависть задать глупый вопрос, но вы получаете сообщение об ошибке при попытке получить доступ к Entity или это проблема IDE? –
На самом деле, я обращаюсь к объекту со страницы JSF и с '# {finishedDesign.description}. Я тоже ничего не вижу на видео. Никакой ошибки на консоли. – Leonardo
Ну, код, который вы показываете, должен быть из «ManagedBean», поддерживающего страницу, поскольку это метод. Я не понимаю аннотацию '@ Override' на EJB CustomerFacade. Разве это не '@ Безгражданство? –