首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确创建实体/对象?

如何正确创建实体/对象?
EN

Stack Overflow用户
提问于 2020-06-28 16:55:44
回答 1查看 114关注 0票数 0

在spring应用程序中创建对象时,我遇到了问题。我有三个类,它们相互依赖。我有三节课。

代码语言:javascript
复制
public class Examine {

    private Integer examineId;
    private String title;
    
    @JsonManagedReference
    private Set<Question> questions;

    public Examine(Integer examineId, String title) {
        this.examineId = examineId;
        this.title = title;
        this.questions = new HashSet<>();
    }

}
代码语言:javascript
复制
public class Question {

    private Integer questionId;
    private String description;
    
    @JsonBackReference
    private Examine examine;

    @JsonManagedReference
    private Set<Answer> answers;

    public Question(Integer questionId, String description, Examine examine) {
        this.questionId = questionId;
        this.description = description;
        this.examine = examine;
        this.answers = new HashSet<>();
    }

}
代码语言:javascript
复制
public class Answer {

    private Integer answerId;
    private String answer;
   
    @JsonBackReference
    private Question question;

    public Answer(Integer answerId, String answer) {
        this.answerId = answerId;
        this.answer = answer;
    }

}

我的问题是。我不太确定我应该按照什么顺序创建对象。下面列出了我的服务类。我开始从类创建对象,这是最外部的检查。

用于检查类的

  1. 我有相当简单的方法

代码语言:javascript
复制
    public void createExamine(Examine examine) {
        examineRepository.save(examine);
    }

  1. 关于问题类,我有一个想法:通过examineId,然后将问题分配给特定的检查.

代码语言:javascript
复制
    public void createQuestion(Question question, Integer examineId) {
        Examine examine = examineService.getExamine(examineId);
        question.setExamine(examine);

        questionRepository.save(question);
    }

  1. 关于答案类,我和问题有相同的想法--通过questionId并为特定的问题分配答案。

代码语言:javascript
复制
    public void createAnswer(Answer answer, Integer questionId) {
        Question question = questionService.getQuestion(questionId);
        answer.setQuestion(question);

        answerRepository.save(answer);
    }

如果我想得对,你能帮我/告诉我吗?至于检查类,我很肯定它是可以的-我对另外两个类有疑问-如果创建它们和相互链接的方法是正确的。

EN

回答 1

Stack Overflow用户

发布于 2020-06-28 17:06:11

在JPA中,In由ORM层生成。

您必须定义这样的实体:

代码语言:javascript
复制
@Entity
@Table(name = "EXAMINE")
public class Examine implements Serializable {

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

然后按照映射规则对其他实体进行分析。

创建对象的顺序并不重要,要链接对象,至少需要链接两个对象。所以examine.setQuestion(问题)。

其他物体上也是一样的。

最后,保存域层次结构的顶层对象。EntityManager.save(检查);

看一看这样的事物:

https://www.baeldung.com/spring-data-jpa-generate-db-schema

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62625598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档