Hibernate / SQL Извлечение записей без возврата ассоциаций - PullRequest
0 голосов
/ 23 марта 2012

Я хочу получить записи из таблицы без ее связей, упомянутых в сущности. Как это сделать с помощью Hibernate?

Я хочу получить запись в таблице Animal, не пытаясь получить породу в следующем примере.

Ниже приведены ассоциации, которые у меня есть:

@Entity
@Table(name = "ANIMAL")
public class Animal {
private Long id;
private String type;
private String subtype;
private String category;    
private Set<Breed> associatedBreeds = new HashSet<Breed>();

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idSeq")
@SequenceGenerator(name = "idSeq", sequenceName = "ID_SEQ")
public Long getId() {
    return id;
}

@Column(name = "TYPE")
public String getType() {
    return type;
}

@Column(name = "SUBTYPE")
public String getSubtype() {
    return subtype;
}

public void setId(Long id) {
    this.id = id;
}

public void setType(String type) {
    this.type = type;
}

public void setSubtype(String subtype) {
    this.subtype = subtype;
}

public void setCategory(String category) {
    this.category = category;
}

@Column(name = "CATEGORY", insertable = false, updatable = false)   
public String getCategory() {
    return category;
}

@OneToMany(mappedBy = "propertyUsage", fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
public Set<Breed> getAssociatedBreeds() {
    return associatedBreeds;
}

public void setAssociatedBreeds(
        Set<Breed> associatedFinancials) {
    this.associatedBreeds = associatedBreeds;
}
}

@Entity
@Table(name = "Breed")
public class Breed {
private Long id;

private Animal animal;

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idSeq1")
@SequenceGenerator(name = "idSeq1", sequenceName = "ID_SEQ1")
public Long getId() {
    return id;
}

public void setPropertyUsage(PropertyUsage propertyUsage) {
    this.animal = animal;
}

@ManyToOne
@JoinColumn(name="ANIMAL_ID", referencedColumnName="ID")    
public PropertyUsage getAnimal() {
    return animal;
}

}

Ответы [ 2 ]

1 голос
/ 23 марта 2012

В аннотации @OneToMany вашего метода getAssociatedBreeds () вы устанавливаете для свойства fetch значение EAGER.Измените это на Ленивый.Это приведет к тому, что ваши связанные элементы не будут загружены, пока вы на самом деле не получите к ним доступ.

1 голос
/ 23 марта 2012

Измените тип выборки на lazy fetch = FetchType.LAZY. Это приведет к тому, что hibernate не будет извлекать породы, пока они не будут запрошены или использованы, а не при создании объекта Animal

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...