我在Scalatra中使用JPA进行数据建模。我有一个数据模型,其中一个类中有一个变量作为另一个类的对象,该类又有一个不同类的对象列表(传递关系)。这三个类如图所示 -
实体XXX
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = “xxx_table")
class XXX(
...
@(OneToOne @field)(fetch=FetchType.LAZY)
@(JoinColumn @field)(name=“xxx_id_2")
var yyy: YYY,
...
) extends AuditableEntity {
def this() = this(null, -1, null)
}
实体YYY
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = “yyy_table")
class SomeSchema extends AuditableEntity {
...
@OneToMany(fetch=FetchType.EAGER, cascade = Array(CascadeType.ALL))
@JoinColumn(name=“xxx_id_3")
@OrderBy("position ASC")
@JoinFetch
var objectTypes: java.util.List[ZZZ] = _
}
实体ZZZ
@Entity
@Table(name = “zzz_table")
class ZZZ(
@(Id @field)
@(ManyToOne @field)
@(JoinColumn @field)(name=“zzz_")
@Column(updatable = false)
var xxx: XXX,
…
@(Column @field)(name = "object_type")
var objectType: String) {
def this() = this(null, -1, null)
}
当我有一个XXX的对象并使用Jackson将其转换为JSON时,我看到我只获取了XXX中除变量yyy之外的所有变量的JSON内容。我尝试将FetchType更改为EAGER,并尝试在JPA中执行JOIN FETCH操作 -
SELECT ds FROM XXX ds JOIN FETCH ds.yyy
当我调试并查看ds变量时,我发现它具有我需要的所有层次结构内容;但是,当转换为JSON时,变量yyy的内容为空。你能否建议我在哪里解决这个问题?
答案 0 :(得分:0)
您使用json4s和Jackson方法吗?如果是,则可能必须为YY添加FieldSerializer,因为DefaultFormat不会正确转换为JSON。