簡體   English   中英

在 Spring Boot 中,如何使用擴展的 setter 和 getter 設置(擴展的)屬性?

[英]In Spring Boot, how do you set a (extended) property using extended setters and getters?

我正在使用 Spring Boot,並具有以下實體定義(已刪節):

package com.vw.asa.entities;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.PreUpdate;
import javax.validation.constraints.NotNull;

public abstract class CmsModel extends Model {
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "is_active")
    private short isActive;
    
    
    public short getIsActive() {
        return isActive;
    }
    
    public void setIsActive(short isActive) {
        this.isActive = isActive;
    }
    
    public void setIsActive(String isActive) {
        if (isActive.equals("true")) {
            this.isActive = IS_TRUE;
        } else if (isActive.equals("1")) {
            this.isActive = IS_TRUE;
        } else {
            this.isActive = IS_FALSE;
        }
    }
} 

然后我有幾個模型擴展了這個“基本”模型,遵循這種風格:

package com.vw.asa.entities.cms;

import com.vw.asa.entities.CmsModel;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * @author Barry Chapman
 */
@Entity
@Table(name = "cms_extra_questions", schema = "asa")
public class CmsExtraQuestions extends CmsModel {
        
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    
    ...
}

當我作為休眠查詢的結果初始化CmsExtraQuestions的實例時,如果我在對象上調用setActive(true) ,它對該對象的成員沒有影響。 當我將CmsModel基類中的 setter 和 getter 復制到CmsExtraQuestions類中時,它工作正常。


$entity = new CmsExtraQuestions();
$entity->setActive(true);


為什么這在調用擴展setter時不設置實例化對象的成員屬性? 如果這是正常的 - 有沒有辦法將這些屬性和成員函數添加到基本模型,以便它們也可以被繼承?

新手的錯誤,我忘了補充@MappedSuperClass到繼承的模型, CmsModel 這允許 JPA 映射來自該類的屬性,就好像它們是在繼承該基類的模型中定義的一樣。

@MappedSuperClass
public abstract class CmsModel extends Model {
    
    @Basic(optional = false)
    @NotNull
    @Column(name = "is_active")

暫無
暫無

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

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