Hon*_*dek 5 java jpa java-ee jpa-2.0
JPA 2.1引入了一个很好的新功能属性转换器 - 请参阅此处的文章:http://www.thoughts-on-java.org/jpa-21-how-to-implement-type-converter/
它允许您拥有某种类型的属性,并将其作为其他内容存储在数据库列中.例如,您有一个具有类型的字段颜色的实体,java.awt.Color但您希望它作为a存储在数据库中String,例如RED或WHITE.
@Entity
class Tag {
String name;
java.awt.Color color; // I want it to be stored as a different type
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在JPA <= 2.0中获得类似的结果?我想做一个不是的类型enum.
我们不区分业务领域层和@Entity类.当然,如果它们之间存在某种映射,我可以想象许多可行的解决方案.我正在寻找在这里我们使用的解决方案,直接在@Entity类本身在业务领域层.
我建议使用此列@Transient并添加另一个@Column将是String的值awt.Color,使用getters和setter作为转换器.
你的课将如下:
@Transient
java.awt.Color color;
@Column
String colorField;
Run Code Online (Sandbox Code Playgroud)
每次使用Color时都使用setter,此setter将解码颜色并将其添加到colorField字段.
public setColor(java.awt.Color color){
this.colorField = color.toString();
this.color = color;
}
Run Code Online (Sandbox Code Playgroud)