我在“独立Java SWING应用程序”中有下一个配置。我有一个问题:我的服务运行没有错误,执行DAO delete方法,但不提交delete:
坚持不懈xml
<persistence-unit name="springappPU" transaction-type="RESOURCE_LOCAL">
</persistence-unit>
Spring配置。xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans- 3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:annotation-config/>
<context:component-scan base-package="gestionclinicaecocitas">
</context:component-scan>
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- holding properties for database connectivity /-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:jpaVendorAdapter-ref="jpaAdapter">
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
<property name="persistenceUnitName" value="springappPU"></property>
</bean>
<bean id="jpaAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:database="${jpa.database}"
p:showSql="${jpa.showSql}"/>
在我的项目的main()中,初始化spring上下文,并获取一个“服务”加载程序类:
ClassPathXmlApplicationContext ac= new ClassPathXmlApplicationContext("spring-config.xml");
ac.getBean(SpringServiceLoader.class);
我的SpringServiceLoader:
@Service
public class SpringServiceLoader{
@Autowired
private CalendarService calendarService;
标记为@Transactional的我的serviceInterface的方法
public interface CalendarioService {
@Transactional
public void deleteDays();
}
服务调用dao-delete方法的实现
@Service("calendarService")
public class CalendarioServiceImpl implements CalendarioService{
@Autowired
private DaysDaoImpl daysDao;
@Override
public void deleteDays{
daysDao.deleteById(1);
}
}
最后是Dao结构:
@Repository
public class DaysDaoImpl extends GenericDaoImpl< Days > {
public DaysDaoImpl(){
setClazz(Days.class );
}
GenericDao类:
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
public abstract class GenericDaoImpl< T extends Serializable> {//implements GenericDao<T>{
@PersistenceContext
protected EntityManager em;
private Class< T > clazz;
public void setClazz( Class< T > clazzToSet ){
this.clazz = clazzToSet;
}
(.....)
public void deleteById( Long entityId ){
this.em.remove(this.em.getReference(clazz, entityId));
}
}
我的实体类:
@Entity
@Table(name="calendar_days")
public class Days implements java.io.Serializable {
@EmbeddedId
private DaysId id;
(....)
我还尝试了一个HQL查询,而不是调用一个基本的CRUD方法,我得到了错误:
执行更新/删除查询
Query query = this.em
.createQuery("delete from Days d where d.id.date < :fecha");
query.setParameter("fecha", fecha);
query.executeUpdate();
如果我尝试让em事务手动开始/提交,则错误将更改为:
不允许在共享EntityManager上创建事务
谢啦
解决这个问题的一个非常简单的方法是将@Transactional
添加到main()方法中。
使用
T entity = em.find(persistentClass, id);
拿到那个实体然后打电话
em.remove(entity);
或者将此记录缩短一行。
更新(感谢@M.Deinum)
最后我找到了一个解决方案。标记为@Transactional的CalendarService接口有效,问题是SpringServiceLoader和CalendarService都定义为@Service。
我已将CalendarService重命名为@Component原型,该原型自动安装到标记为@Service原型的SpringServiceLoader,现在事务自动正常工作。
谢谢大家的支持!我会看看Spring数据
问题内容: 这有点奇怪。当我在线搜索此问题时,我看到许多页面的Google搜索结果和SO解决方案…但是似乎没有任何效果! 简而言之,我正在尝试实现AngularUI Bootstrap Modal。我不断收到以下错误: 错误:[$ injector:unpr]未知提供程序:$ uibModalInstanceProvider <-$ uibModalInstance <-addEntryCtrl
我使用的是Xcode 4.5和iOS 6。 我正在构建一个使用故事板的通用应用程序。我有一个视图控制器,它在导航栏中有一个按钮。当点击按钮时,我正在使用一个segue来显示另一个视图控制器作为模式。模态视图控制器在其导航栏中有一个“取消”和一个“保存”按钮。在情节提要中,模式按钮项链接到新退出操作上的操作,该操作应展开到父视图控制器,取消模式,并调用操作处理程序。 这在iPhone上运行良好,但我
我试图用django管道编译静态,但无法在开发模式下为静态服务。由于我不是Django开发人员,我可能对Django为静态文件本身提供服务的方式有所误解。这是我的项目结构: 项目(项目本身) css 应用程序。斯蒂尔 媒体 当我使用共享静态时,我已经指定了指令来允许Django dev server和命令查找共享静态: 这是我的: 在我的模板中,我指定了CSS组: 因此,生成这样的HTML: 但返
我正在使用JAX-WS开发WebService(我在jaxws maven插件上使用wsimport目标)。我编写了一个导入XSD模式的WSDL。 此外,我还生成了web服务类,并创建了endpoint和all。到目前为止,一切都很顺利。当我在Tomcat7上运行服务时,一切都正常。我可以从以下位置访问浏览器中的wsdl: 但是我无法访问xsd模式。问题是在这个wsdl: 当然,在生成类的过程中,
我有一个模态,它有一个形式。我试图提交表单而不使用ajax刷新页面,我成功地提交了表单,但我无法隐藏模态。 带表单的引导模式: 以上模式的Ajax代码: 在弹出Modal后,我在表单中提供了一个随机的支付卡详细信息,在我提交表单后,使用ajax post调用将详细信息发布到db中,并显示支付成功的警报。但是,我无法关闭模式。请解决这个问题??
我使用Bulma作为我的CSS框架,在尝试使用它们的模态时,它们根本没有样式化,好像我遗漏了什么。 覆盖层就在那里,按钮似乎就位并且可见,但内容是灰色的。 我正在使用以下代码: Bulma的其他元素都在发挥作用。 注意:我不是在问JS部分,以及如何在Click上实际显示模态。我有纯粹的CSS问题。