-1

我想在 SAP HANA 云平台上用 Java 创建一个简单的项目管理应用程序。用户可以将人员添加到项目并定义从事项目的人员的工作时间。

我成功创建了一个小型应用程序逻辑。但是,我不清楚我应该如何定义持久数据对象。以及如何以正确的方式存储和读取数据。

我创建了“Project”和“Person”类来添加数据(见下文)。

如何在它们之间建立关系并存储一个人在项目上花费的工作时间?

在 ERM 上,我知道解决方案:Person 和 Project 之间的 1:n 关系以及它们之间的额外表,其中包含“projectID”、“personID”和“workingHours”。

到目前为止,应用程序使用“addNewPerson”函数写入数据:

addNewPerson : function( sFirstName, sLastName, oTable ) {  
          var _this = this;  
          _this.odataServiceUrl = personsListOdataServiceUrl;  
          jQuery.ajax({  
             url : _this.odataServiceUrl + "/Person?$format=json",  
             type : 'POST',  
             contentType : 'application/json',  
             data : JSON.stringify({  
                                     firstName : sFirstName,  
                                     lastName : sLastName  
                                  }),  
             success : function(data) {  
               _this.getView().getModel().refresh();  
               oTable.unbindRows().bindRows("/Person");  
      },  
             error : function(jqXHR, textStatus, errorThrown) {  
           sap.ui.commons.MessageBox.alert("Failed to add person: " + textStatus+ "\n" + errorThrown);  
             }  
      }); },  

要读取数据,我只需将行绑定到对象。

那么,我怎样才能以正确的方式创建数据对象呢?以及如何将数据读取和写入对象?

人.java:

package com.sap.netweaver.cloud.sample;
import javax.persistence.*;
@Entity
@Table(name = "T_PERSON")
@NamedQuery(name = "AllPersons", query = "select p from Person p")

public class Person {
    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String firstName;
    @Basic
    private String lastName;

    public long getId() {
        return id;
    }

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

    public void setFirstName(String param) {
        this.firstName = param;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setLastName(String param) {
        this.lastName = param;
    }

    public String getLastName() {
        return lastName;
    }
}

项目.java:

package com.sap.netweaver.cloud.sample;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = "T_PROJECT")
@NamedQuery(name = "AllProjects", query = "select p from Project p")
public class Project {

    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String projectName;
    @Basic
    private String projectDesc;
    public long getId() {
        return id;
    }

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

    public void setProjectName(String param) {
        this.projectName = param;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectDesc(String param) {
        this.projectDesc = param;
    }

    public String getProjectDesc() {
        return projectDesc;
    }
}
4

1 回答 1

0

首先是关于人与项目之间的联系的问题。因为我猜一个项目可以有多个人,所以你需要一个

@OneToMany(mappedBy = "projectEntity", cascade = CascadeType.PERSIST)
private List<Persons> persons= new ArrayList<Persons>();

在项目方面和人员方面

@JoinColumn(name = "projectEntity")// JPA creates join column for you with the project id - see wiki oneToMany JPA example
private Project project;

对于测试,我强烈推荐以下步骤:

  1. 从 SAP HCP sdk 中的 JPA 示例开始:neo-java-web-sdk-2.36.4\samples\persistence-with-jpa
  2. 一旦您理解了示例(创建、保留、查找),您就可以通过添加具有上述编码的第二个实体来添加 1:N 关系。3)。
  3. 如果这可行,我建议从本地 Tomcat 或 Java EE 服务器中设置的默认内存数据库转到真正的本地数据库。Apache Derby 在那里工作得很好。您可以找到各种 youtube 视频,其中解释了 derby 的安装。
于 2016-02-16T13:18:34.463 回答