【发布时间】:2014-10-25 17:05:08
【问题描述】:
我使用休眠作为 ORM。我有两个实体Shop 和TypeShop。 TypeShop可能有几家店。
@Entity
@Table(name = "shop_types")
public class TypeShop {
...
@OneToMany(fetch = FetchType.EAGER, mappedBy="typeShop", cascade = CascadeType.ALL)
private Set<Shop> shops;
...
}
和
@Entity
@Table(name = "shops")
public class Shop {
...
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "shop_type_id")
private TypeShop typeShop;
...
}
当我想通过 TypeShop id 以 json 格式查找所有 shops 时,我会得到如下信息:
[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First Description","coordinates":"59.842055288480076, 29.700164794921875","contacts":"First Contacts","site":"First web site","mail":"First email","photos":[],"typeShop":{"id":11,"name":"Производство газобетона","shops":[{"id":146,"name":"First Name","address":"First Address","description":"First .....
而且这个列表一次又一次地出现。正如您所看到的,由于获取类型 EAGER 我得到了无限的 json 格式。我试图将EAGER 更改为LAZY,但我得到了“failed to lazily initialize a collection of role” exception。
我该如何解决这个问题?提前致谢!
已编辑:
如果我从 Shop 实体中删除 TypeShop 的吸气剂,这会有所帮助。但是我很好奇是否有更好的方法。
【问题讨论】: