Search code examples
javaejbweblogic

Not whole entity being retrieved in ejb3


I have three classes which are connected to each other. Order, OrderDetail and Product. When I do in my JPA project the following:

 @Override
    public Order getOrderById(String orderID) {
        Order order = (Order)

          em.createQuery("select A from Order A where A.orderId = ?1")
            .setParameter(1, orderID)
            .getSingleResult();
        return order;    
    }

all the info is retrieved. However, when I move it to the ebj project. I only get Order and that's it. All classes are however included in both the persistence.xml files (JPA and ejb3). Why is that and how should i solve it? The three classes are displayed underneath. I'm using Oracle Weblogic 10.3.3. I tried restarting and clearing the server but that didn't work.

*package eshop;

import java.io.Serializable;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;*


/**
 * The persistent class for the orders database table.
 * 
 */
@Entity
@Table(name="orders")
public class Order implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="order_id")
    private String orderId;

    @Column(name="cc_expiry")
    private String ccExpiry;

    @Column(name="cc_name")
    private String ccName;

    @Column(name="cc_number")
    private String ccNumber;

    @Column(name="delivery_address")
    private String deliveryAddress;

    @Column(name="delivery_name")
    private String deliveryName;

    @Column(name="delivery_surname")
    private String deliverySurname;

    private String status;

    //bi-directional many-to-one association to OrderDetail
    @OneToMany(mappedBy="order", cascade=CascadeType.PERSIST)
    private List<OrderDetail> orderDetails = new ArrayList<OrderDetail>();

    public void addOrUpdateOrderDetail(Product product) {
        this.orderDetails.add(new OrderDetail(product));


    }







    public Order() {
    }

    public String getOrderId() {
        return this.orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getCcExpiry() {
        return this.ccExpiry;
    }

    public void setCcExpiry(String ccExpiry) {
        this.ccExpiry = ccExpiry;
    }

    public String getCcName() {
        return this.ccName;
    }

    public void setCcName(String ccName) {
        this.ccName = ccName;
    }

    public String getCcNumber() {
        return this.ccNumber;
    }

    public void setCcNumber(String ccNumber) {
        this.ccNumber = ccNumber;
    }

    public String getDeliveryAddress() {
        return this.deliveryAddress;
    }

    public void setDeliveryAddress(String deliveryAddress) {
        this.deliveryAddress = deliveryAddress;
    }

    public String getDeliveryName() {
        return this.deliveryName;
    }

    public void setDeliveryName(String deliveryName) {
        this.deliveryName = deliveryName;
    }

    public String getDeliverySurname() {
        return this.deliverySurname;
    }

    public void setDeliverySurname(String deliverySurname) {
        this.deliverySurname = deliverySurname;
    }

    public String getStatus() {
        return this.status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<OrderDetail> getOrderDetails() {
        return this.orderDetails;
    }

    public void setOrderDetails(List<OrderDetail> orderDetails) {
        this.orderDetails = orderDetails;
    }

}


package eshop;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the order_details database table.
 * 
 */
@Entity
@Table(name="order_details")
public class OrderDetail implements Serializable {
    private static final long serialVersionUID = 1L;

@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

private BigDecimal price;

private int quantity;

//bi-directional many-to-one association to Order
@ManyToOne
@JoinColumn(name="order_id")
private Order order;

//bi-directional many-to-one association to Product
@ManyToOne
@JoinColumn(name="product_id")
private Product product;

@Id
private int product_id;

public OrderDetail() {
}

public OrderDetail (Integer ProductId,Product product,Integer productQuantity,BigDecimal price, Order order) {
        this.price= price;
        this.product_id = ProductId;
        this.product = product;
        this.quantity = productQuantity;
        this.order = order;
        }

    public OrderDetail(Product product1) {
    product_id = product1.getCategoryId();
    price = product1.getPrice();
    quantity  = 1;
    product = product1;

    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public BigDecimal getPrice() {
        return this.price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public int getQuantity() {
        return this.quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public Order getOrder() {
        return this.order;
    }

    public void setOrder(Order order) {
        this.order = order;
    }

    public Product getProduct() {
        return this.product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public int getProduct_id() {
        return product_id;
    }

    public void setProduct_id(int product_id) {
        this.product_id = product_id;
    }

}

package eshop;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the products database table.
 * 
 */
@Entity
@Table(name="products")
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="product_id")
    private int productId;

    @Column(name="category_id")
    private int categoryId;

    @Lob
    private String descr;

    private BigDecimal price;

    @Column(name="product_name")
    private String productName;

    private int quantity;

    public Product() {
    }

    public int getProductId() {
        return this.productId;
    }

    public void setProductId(int productId) {
        this.productId = productId;
    }

    public int getCategoryId() {
        return this.categoryId;
    }

    public void setCategoryId(int categoryId) {
        this.categoryId = categoryId;
    }

    public String getDescr() {
        return this.descr;
    }

    public void setDescr(String descr) {
        this.descr = descr;
    }

    public BigDecimal getPrice() {
        return this.price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public String getProductName() {
        return this.productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public int getQuantity() {
        return this.quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

}

Solution

  • As it appeared I had to add transaction type JTA to the ejb's web.xml file.