Hibernate: слишком много строк
У меня проблема с получением строк из моей базы данных с помощью Hibernate. Когда я хочу получить только одну строку, я получаю 20. Когда я хочу получить все строки из таблицы с примерно 1,5 тыс. Строк, я получаю ровно 15,2 тыс. Строк. Класс сущности этой таблицы имеет составной первичный ключ.
Это мой код для получения всех строк:
Criteria criteria = getSession().createCriteria(type);
criteria.setCacheable(true).setCacheRegion(BaseEntity.PACKAGE);
criteria.list();
И это мой класс Entity:
@javax.persistence.Entity
@Table(name = "my_table")
public class My extends MyEntity {
@EmbeddedId
private MyPK id;
@Column(name = "text", nullable = false)
protected String text;
@ManyToOne
@JoinColumn(name = "property", nullable = false, insertable = false, updatable = false)
protected Option option;
@Override
public MyPK getId() {
return id;
}
@Override
public void setId(MyPK id) {
this.id = id;
}
//getters and setter
}
А этоMyPK
учебный класс:
@Embeddable
public class MyPK implements Serializable {
@Column(name = "qwerty")
protected String qwerty;
@Column(name = "property")
protected String property;
//constructors, getters and setters
}
MyEntity
класс абстрактный класс с@MappedSuperclass
аннотаций. Это заголовок этого класса:
@MappedSuperclass
public abstract class MyEntity
Что я делаю неправильно? Это проблема с?EmbeddedId
РЕДАКТИРОВАТЬ # 1 Как я понял, это проблема с этим:
@ManyToOne
@JoinColumn(name = "property", nullable = false, insertable = false, updatable = false)
protected Option option;
Этот объект содержит внешний ключ к другой таблице. И эта другая таблица имеет ссылку на другую. И эта последняя таблица имеет 10 строк для предыдущей таблицы. В результате я получаю количество строк * 10. Возможно, проблема в аннотации Hibernate в моих сущностях.