簡體   English   中英

使用休眠進行一對多映射

[英]One to many mapping using hibernate

我是數據庫的初學者。當前,我正在使用PostgreSQL數據庫。

這是請求后的模型,在這里我可以看到問題列表。

public class QuestionListRequest {


List<QuestionRequest> questionList;

public List<QuestionRequest> getQuestionList() {
    return questionList;
}

public void setQuestionList(List<QuestionRequest> questionList) {
    this.questionList = questionList;
}

這是我的問題表,我必須在其中存儲有關發帖請求的問題。

 @Entity
 @Table(name = "ns_question_b")
 public class Question extends DomainObject {

@GeneratedValue(strategy = GenerationType.TABLE, generator = "question_gen")
@TableGenerator(name = "question_gen", table = "question_id_gen", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL", pkColumnValue = "QuestionId_Gen", initialValue = 100000, allocationSize = 1000)
@Id
@Column(name = "question_id")
private BigInteger questionId;

@Column(name = "question_text")
private String questionText;

@Column(name = "question_type")
@Enumerated(EnumType.STRING)
private QuestionType questionType;

@Column(name = "question_timeout")
private Double questionTimeout;

@Column(name = "marks")
private Double marks;

@Column(name = "negative_mark")
private Double negativeMark;

@Column(name = "question_position")
private Double questionPosition;

@Column(name = "question_options")
private String questionOptions;

@Column(name = "subject")
private String subject;


public Question() {
    super();
}

public Question(BigInteger questionId, String questionText, QuestionType questionType, Double questionTimeout, Double marks, Double negativeMark, Double questionPosition, String questionOptions, String subject, Answer answer) {
    super();
    this.questionId = questionId;
    this.questionText = questionText;
    this.questionType = questionType;
    this.questionTimeout = questionTimeout;
    this.marks = marks;
    this.negativeMark = negativeMark;
    this.questionPosition = questionPosition;
    this.questionOptions = questionOptions;
    this.subject = subject;


}

public Question(String createdBy, Timestamp creationDate, int version, Timestamp lastModifiedDate,
                String lastModifiedBy, RecordStatus recordStatus) {
    super(createdBy, creationDate, version, lastModifiedDate, lastModifiedBy, recordStatus);
}

public BigInteger getQuestionId() {
    return questionId;
}

public void setQuestionId(BigInteger questionId) {
    this.questionId = questionId;
}

public String getQuestionText() {
    return questionText;
}

public void setQuestionText(String questionText) {
    this.questionText = questionText;
}

public QuestionType getQuestionType() {
    return questionType;
}

public void setQuestionType(QuestionType questionType) {
    this.questionType = questionType;
}

public Double getQuestionTimeout() {
    return questionTimeout;
}

public void setQuestionTimeout(Double questionTimeout) {
    this.questionTimeout = questionTimeout;
}

public Double getMarks() {
    return marks;
}

public void setMarks(Double marks) {
    this.marks = marks;
}

public Double getNegativeMark() {
    return negativeMark;
}

public void setNegativeMark(Double negativeMark) {
    this.negativeMark = negativeMark;
}

public Double getQuestionPosition() {
    return questionPosition;
}

public void setQuestionPosition(Double questionPosition) {
    this.questionPosition = questionPosition;
}

public String getQuestionOptions() {
    return questionOptions;
}

public void setQuestionOptions(String questionOptions) {
    this.questionOptions = questionOptions;
}

public String getSubject() {
    return subject;
}

public void setSubject(String subject) {
    this.subject = subject;
}

現在我的問題是如何通過數據庫一次調用在問題表中一個問題一個一個地存儲所有問題? 我找到了很多解決方案,但是只有行到行的映射,我不希望這樣。 我希望所有問題都可以在單個調用中直接存儲在Question表中。

該標題尚不清楚您的問題,標題為“一對多”問題,但說明不明確。 如果需要批量保存對象,則可以將所有問題添加到列表中,將其添加到會話中,並在一定限制下刷新它。

需要設置此屬性,

hibernate.jdbc.batch_size 20

並執行以下代碼,

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
    Customer customer = new Customer(.....);
    session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

這取自http://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch15.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM