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

thtygnil  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(132)

我想在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);  
             }  
      }); },

要读取数据,我只需将行绑定到对象。
那么,如何以正确的方式创建数据对象呢?我如何读取和写入对象的数据?

Person.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;
    }
}
gblwokeq

gblwokeq1#

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

@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
1.一旦理解了这个例子(create、persit、find),就可以通过添加第二个实体来添加1:N关系,其中的代码如上所述。(3)第三章。
1.如果这是工作,我建议从默认的内存数据库设置在您的本地Tomcat或Java EE服务器到一个真实的的本地DB。Apache Derby在那里工作得很好。你可以在youtube上找到各种解释derby安装的视频。

相关问题