如何在SAP HANA Cloud中配置和使用持久性数据对象?



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

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

我创建了类"项目"和"人员"来添加数据(见下文)。

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

在ERM上,我知道解决方案:人员和项目之间的1:n关系以及它们之间带有"projectID","personID"和"workHours"的额外表。

到目前为止,该应用程序使用函数"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;
    }
}

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

@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. 一旦你理解了这个例子(创建,persit,find),你添加1:N通过添加具有上述编码的第二个实体来关系。3).
  3. 如果这有效,我建议从本地Tomcat或Java EE服务器中设置的默认内存数据库转到真正的本地数据库。阿帕奇德比在那里为我工作得很好。您可以找到各种 youtube 视频,其中解释了德比的安装。

相关内容

  • 没有找到相关文章

最新更新