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