我正在研究用户可以向多个人发送消息的要求,我必须将这些消息保存在消息表中。
我使用 JPA entityManager 来持久化对象,使用 Hibernate 作为持久性提供者和 Spring 声明式事务管理。
即使我执行了 3 次 persist() 方法,它也只在表中保存了一行。我不知道该怎么做才能保存所有消息。它不显示任何异常消息。
以下是我在 applicationContext.xml 中的声明式事务管理配置
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method
name="*"
propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut
id="messageServiceOperation"
expression="execution(* com.abhinow.message.services.*.*(..))" />
<aop:advisor
advice-ref="txAdvice"
pointcut-ref="messageServiceOperation" />
</aop:config>
以下是我的服务类 MessageService.java 中的代码
private void saveMultipleMessages(SentMessage message) {
String[] toAddresses = message.getMultipleDestinations().split(",");
for(String to: toAddresses) {
message.setTo(to);
saveMessage(message);
}
}
public void saveMessage(SentMessage message) {
messageRepository.saveSentMessage(message);
}
以下是我的 MessageRepository.java 中的代码
@Repository
public class MessageRepository {
@PersistenceContext
EntityManager entityManagerFactory;
public void saveSentMessage(SentMessage message) {
entityManagerFactory.persist(message);
}
}
任何帮助,将不胜感激。提前致谢