[英]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.