我有一种方法可以在EJB bean中保存新对象。调用此方法时没有错误,但数据库中没有任何更改。我不明白为什么。使用EJB3持久化不起作用
下面是代码:
@Stateless(name = "Ar", mappedName = "ManagementBean")
public class ManagementBean implements IManagementBeanLocal, IManagementBeanRemote {
...
@Override
public int storeRawSms(String raw, String requestUid, String text, String service, boolean correctlyAnalysed, Date receivedTimestamp,
boolean toBeAnalysed, String phoneNumber) {
// Get phone number, create if it dosn't exist
PhoneNumber pn = getOrCreatePhoneNumberPrivate(phoneNumber);
// Create rawSMS
RawSms rawSms = new RawSms(raw, requestUid, text, service, correctlyAnalysed, receivedTimestamp, toBeAnalysed, pn);
// Store and return result
em.persist(rawSms);
int result = rawSms.getId();
em.flush();
em.clear();
return result;
}
...
,主叫方:
@PersistenceContext private EntityManager em;
...
int rawSmsIs = bean.storeRawSms(raw, requestUid, message, service, false, new Date(), true, sender);
你有一个想法?
你检查了生成的SQL吗?你能通过调试器中的方法吗? – kostja
将代码添加到注入ManagementBean的位置以及调用方法的位置。另外你注入电子邮件 –
顺便说一句。如果您使用的是事务范围的'EntityManager','flush'和'clear'方法是多余的。 – kostja