Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hello World@OneToMany在带有JPA实体的WebService会话Bean中_Java_Web Services_Jpa_Soap_Persistence - Fatal编程技术网

Java Hello World@OneToMany在带有JPA实体的WebService会话Bean中

Java Hello World@OneToMany在带有JPA实体的WebService会话Bean中,java,web-services,jpa,soap,persistence,Java,Web Services,Jpa,Soap,Persistence,女士们,先生们 我正在尝试使用基于SOAP的Web服务设置一个简单的@OneToMany Hello World类型示例。设置相当简单:父/子关系中的两个实体。订单是父母。OrderRows是孩子。所有这些都是使用jdeveloper11g通过向导设置的。除了更改会话bean的名称之外,我没有修改代码 当我试图通过在Orders.java文件中包含@OneToMany注释和相关的列表操作(set、add、remove)来表达这种关系时,就会出现问题。如果我将这些注释掉,并且不返回包含OrderR

女士们,先生们

我正在尝试使用基于SOAP的Web服务设置一个简单的@OneToMany Hello World类型示例。设置相当简单:父/子关系中的两个实体。订单是父母。OrderRows是孩子。所有这些都是使用jdeveloper11g通过向导设置的。除了更改会话bean的名称之外,我没有修改代码

当我试图通过在Orders.java文件中包含@OneToMany注释和相关的列表操作(set、add、remove)来表达这种关系时,就会出现问题。如果我将这些注释掉,并且不返回包含OrderRows的关联列表,则一切正常。包括@OneToMany,不返回任何内容。这可能是某种简单的配置错误,但问题是,当我右键单击会话bean并选择“测试Web服务”,选择getOrdersFindAll()操作,然后单击“发送请求”时,控制台中不会出现任何错误。我得到的只是一条很好的尖刻的信息,上面写着“没有要展示的内容”。所以我就坐在这里。。。凌晨2点。。。想知道“威士忌探戈狐步舞?”

我浏览了一些网站,比如JavaEE7教程,但都没有用

有人有什么想法吗?或者有人会有一些好的网站来获取一些实用的例子吗

MySessionBean.java

import java.util.List;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "MySession", mappedName = "HelloWs-HelloService-MySession")
@WebService(name = "MySessionBeanService", portName = "MySessionBeanServicePort")
public class MySessionBean {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "HelloService")
    private EntityManager em;

    public MySessionBean() {
    }

    /** <code>select o from Orders o</code> */
    public List<Orders> getOrdersFindAll() {
        return em.createNamedQuery("Orders.findAll").getResultList();
    }
}
My Orders.java实体

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

@Entity
@NamedQueries( { @NamedQuery(name = "Orders.findAll", query = "select o from Orders o")     })
public class Orders implements Serializable {
    @Id
    @Column(name = "ORDER_ID", nullable = false)
    private BigDecimal orderId;
    @OneToMany(mappedBy = "orders")
    private List<OrderRows> orderRowsList;

    public Orders() {
    }

    public Orders(BigDecimal orderId, String refName) {
        this.orderId = orderId;
    }

    public BigDecimal getOrderId() {
        return orderId;
    }

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

    public List<OrderRows> getOrderRowsList() {
        return orderRowsList;
    }

    public void setOrderRowsList(List<OrderRows> orderRowsList) {
        this.orderRowsList = orderRowsList;
    }

    public OrderRows addOrderRows(OrderRows orderRows) {
        getOrderRowsList().add(orderRows);
        orderRows.setOrders(this);
        return orderRows;
    }

    public OrderRows removeOrderRows(OrderRows orderRows) {
        getOrderRowsList().remove(orderRows);
        orderRows.setOrders(null);
        return orderRows;
    }
}

需要注意的重要事项是XmlAccessorType和XmlTransient注释。这告诉XML转录器不要陷入在两个实体之间来回的无限循环中。据说还有一个@XmlInverseReference注释更好,但我无法让它工作

威士忌探戈狐步+1
<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
  <persistence-unit name="HelloService">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>java:/app/jdbc/jdbc/HelloConnDS</jta-data-source>
    <class>helloservice.Orders</class>
    <class>helloservice.OrderRows</class>
    <properties>
      <property name="eclipselink.target-server" value="WebLogic_10"/>
      <property name="javax.persistence.jtaDataSource"     value="java:/app/jdbc/jdbc/HelloConnDS"/>
    </properties>
  </persistence-unit>
</persistence>
@XmlAccessorType(XmlAccessType.FIELD)
public class Child implements Serializable {
...
@XmlTransient
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private Parent parent;