Я наткнулся на действительно раздражающую ситуацию: я использую Hibernate & Spring в качестве бэкэнда для своего приложения, и кажется, что в некоторых случаях сущности, которые находятся в связи с конкретной сущностью, не выбираются как обычные объекты сущности изБД, но как Javassist типов.Например:
У меня есть объект Campaign со следующими отношениями:
@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
[..]
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
private List<Dealer> dealers = new ArrayList<Dealer>();
@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "sales_area_id", nullable = false) })
private List<SalesArea> salesAreas = new ArrayList<SalesArea>();
}
При получении salesAreas, связанных с этой кампанией, я получаю список SalesArea _ $$ _ javassist_56, а для дилеров, Я получаю нормальные спящие сущности.Поскольку клиентская часть основана на GWT, мы используем RequestFactory для извлечения материала.Сначала я думал, что это проблема с прокси, локаторами и т. Д., Но я установил точку останова в службе, где они извлекаются, и они являются объектами Javassist непосредственно после их выбора.Кажется, что даже удаляя аннотацию FetchType.LAZY (хотя это определенно нежелательное решение), происходит то же самое.Это произошло и с другими типами отношений, не только @ ManyToMany.
Мы используем GWT 2.3, Spring 3, Hibernate 3.6.3 и JPA 2.0 для аннотаций.
Любые предложения будут оценены.
Заранее спасибо