我有3个JPA类--一个Account,它包含一个Address,其中有一个City对象
public class Account implements java.io.Serializable {
// Fields
private Address address;
//Setters and getters for other fields
@OneToOne(fetch = FetchType.LAZY, mappedBy = "account")
public Address getAccountAddress() {
return this.address;
}
public void setAccountAddress(Address address) {
this.address = address;
}public class Address implements java.io.Serializable {
// Fields
private City city;
//Setters and getters for other fields
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CityId", nullable = false)
public City getCity() {
return this.city;
}我想解决N+1选择问题,我尝试在类上面使用@BatchSize,但是它没有停止对数据库的N+1调用,因此我不得不在persistence.xml中设置batchSize
<property name="hibernate.default_batch_fetch_size" value="50" />
<property name="hibernate.jdbc.batch_size" value="50" />现在,除了一个实体(即Address )外,它还能工作,因此我为City和Account获得了一个select,但我仍然获得了N用于Address。我注意到,唯一的区别是帐户和地址之间的关系是一对一的。
我的问题是:
persistence.xml中设置它),为了使注释有效,是否应该做一些设置?发布于 2013-10-18 15:12:50
@BatchSize放在哪门课上了?您应该将其放在City类之上。还尝试了@BatchSize以上的方法getCity();https://stackoverflow.com/questions/18823736
复制相似问题