@Entity
public class Bid {
@Id
@GeneratedValue
@Column(name = "bid_id")
private Long bidId;
@Column(name = "bid_amt")
private double bidAmount;
@Basic(fetch = FetchType.LAZY, optional = false)
private String person;
@ManyToOne(targetEntity = Item.class, fetch = FetchType.LAZY)
@JoinColumn(name = "bid_item", referencedColumnName = "item_id", nullable = false)
private Item item;
public Long getBidId() {
return bidId;
}
public double getBidAmount() {
return bidAmount;
}
public String getPerson() {
return person;
}
public Item getItem() {
return item;
}
public void setBidAmount(final double bidAmount) {
this.bidAmount = bidAmount;
}
public void setPerson(final String person) {
this.person = person;
}
public void setItem(final Item item) {
this.item = item;
}
public Bid() {
}
@Override
public String toString() {
return "Bid [bidId=" + bidId + ", bidAmount=" + bidAmount + ", person="
+ person + /* ", item=" + item + */"]";
}
}
Контрольный пример:
@Test
public void testBidRead() {
final Session currentSession = sessionFactory.getCurrentSession();
final List<Bid> bids = currentSession.createQuery("from Bid").list();
for (final Bid bid : bids) {
System.out.println(bid);
}
}
И сгенерированный SQL Hibernate:
/*
from
Bid */ select
bid0_.bid_id as bid1_1_,
bid0_.bid_amt as bid2_1_,
bid0_.bid_item as bid4_1_,
bid0_.person as person1_
from
Bid bid0_
Вопрос: Хотя я пометил атрибут person
как lazy &&необязательно , почему это часть SQL-запроса?Означает ли это, что Hibernate не получает лениво?То же самое в случае с Item.
Как лениво извлекать атрибуты?