您应该添加attribute
类标记字段Class<?> attributeClass
。另一种方法是创建枚举AttributeType
并将其用作标记字段
@Entity(name = "additional_attributes")
class AdditionalAttributes {
@Id
private Integer id;
private String attributeName;
Class<?> attributeClass;
String attributevalue;
public void setAttribute(Object attribute){
attributeClass = attribute.getClass()
attributevalue = attribute.toString();
}
}
要设置属性,请使用:
Integer integerAttribute = 100;
additionalAttributes.setAttribute(integerAttribute);
Boolean booleanAttribute = true;
additionalAttributes.setAttribute(booleanAttribute);
然后有两种方法:
1)添加到实体或服务类公共attribute
parcer
public Object getAttribute() throws NumberFormatException {
if(attributeClass == Integer.class) {
return Integer.parseInt(attributevalue);
}
if(attributeClass == Boolean.class) {
return Boolean.parseBoolean(attributevalue);
}
//...
}
用法:
Object attribute = additionalAttributes.getAttribute();
2)或者使用pair方法得到attribute
public boolean isIntegerAttribute() {
return attributeClass == Integer.class;
}
public Integer getIntegerAttribute() throws NumberFormatException {
return Integer.parseInt(attributevalue);
}
public boolean isBooleanAttribute() {
return attributeClass == Boolean.class;
}
public Boolean getBooleanAttribute() {
return Boolean.parseBoolean(attributevalue);
}
//...
用法:
if(additionalAttributes.isIntegerAttribute()) {
Integer integerAttribute = additionalAttributes.getIntegerAttribute();
//...
}
if(additionalAttributes.isBooleanAttribute()) {
Boolean booleanAttribute = additionalAttributes.getBooleanAttribute();
//...
}