我正在尝试用Spring 3,JPA 2和Hibernate 3创建一个应用程序.当y持久化实体时我遇到了问题:没有任何反应!数据未插入数据库中,也不执行查询.但是,当我使用query.getResultList()之类的请求时,select正常工作.
所以我认为我的问题只出现在持续/更新和事务管理器上,但我对spring并不是很好.你能帮我吗 ?
这是我的配置文件:
我的applicationContext.xml
<jee:jndi-lookup id="soireeentreamis_DS" jndi-name="jdbc/soireeentreamis" />
<bean id="persistenceUnitManager"
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/persistence.xml</value>
</list>
</property>
<property name="defaultDataSource" ref="soireeentreamis_DS" />
<property name="dataSources">
<map>
<entry key="soireeentreamisDS" value-ref="soireeentreamis_DS" />
</map>
</property>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitManager" />
<property name="persistenceUnitName" value="soireeentreamisPU" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
</bean>
</property>
</bean>
<bean id="soireeentreamisTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<tx:annotation-driven transaction-manager="soireeentreamisTransactionManager" /> …Run Code Online (Sandbox Code Playgroud) 我实际上是在使用不同的过滤器进行研究。
当我使用JpaRepository进行简单查询时,我发现JpaSpecificationExecutor可以使用Criterias进行动态查询。
我的问题是我需要使用group by和count()创建一个复杂的查询。分组依据是可以的,但是我找不到如何覆盖“选择”部分来放置“计数”指令的方法。
有人可以帮我吗?
我正在使用spring 3.1.2和spring-jpa-data 1.0.3这是我的代码:
return new Specification< Article >() {
@Override
public Predicate toPredicate(final Root<Article> root,
final CriteriaQuery<?> query, final CriteriaBuilder builder) {
//count ???
query.groupBy(root.get(Article_.id));
Predicate p = builder.and(builder.like(root.<String> get(Article_.title), "%" + title + "%"));
return p;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢 !