我有两个实体(Order,Account)并使用以下关系:
@ManyToOne(optional = false)
@JoinColumn(name = "account_id", nullable = false)
public Account getAccount() {
return account;
}
我希望按帐户名称获取所有订单。 我正在使用JPA存储库,我只需要定义具有特定名称的方法:
public interface OrdersRepository extends JpaRepository<Order, String> {
List<Order> findByAccountName(String accountName);
}
Hibernate生成以下sql查询:
select order0_.id as id1_1_, order0_.account_id as account20_1_ from orders order0_ cross join accounts account1_ where order0_.account_id=account1_.id and account1_.name = ?
我知道有order0_.account_id=account1_.id
条件交叉连接与内连接具有相同的行为,但我的问题是:
为什么hibernate不使用内连接?
我找不到配置中的错误。
hibernate.dialect=org.hibernate.dialect.MySQLDialect
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.9.2.RELEASE</version>
</dependency>
提前致谢!