Bonjour,

Voici mon persistence.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    <persistence-unit name="****">
		<jta-data-source>Datasource</jta-data-source>
        <class>core.entities.RequestProperties</class>
        <class>core.entities.Requests</class>
        <class>core.entities.RequestStatus</class>
        <class>core.entities.ResponseProperties</class>
        <class>core.entities.Status</class>
        <properties>
        	<property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/>
        	<property name="openjpa.TransactionMode" value="managed"/>
        	<property name="openjpa.Log" value="DefaultLevel=WARN,Runtime=INFO,Tool=INFO,SQL=TRACE"/>
        	<property name="dialect" value="org.apache.openjpa.jdbc.sql.DB2Dictionary"/>
        </properties>
    </persistence-unit>
</persistence>
Dans mon code j'ai un select suivi par après d'un insert et un update :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
public List getRequestsByStatus(Status status){
		/*Query query = this.getEm().createQuery("select ID from Requests");*/
		Query query = this.getEm().createNamedQuery(Requests.QUERY_REQUESTS_BY_STATUS);
		query.setParameter("statusId", status.getId());
		return query.getResultList();
	}
	@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
	public void updateRequestStatus(Requests request, Status status, String remark) {
 
		if(request.getId() == null){
			this.getEm().persist(request);
		}
		RequestStatus rs = new RequestStatus();
		rs.setDate(new Date());
		rs.setRemark(remark==null?"":remark.substring(0,255));
		rs.setStatus(status);
		rs.setRequests(request);
		this.getEm().clear();
		this.getEm().persist(rs);
		request.setActualStatus(rs);
		this.getEm().clear();
		this.getEm().merge(request);
	}
ces 2 méthodes sont appellée l'une après l'autre d'un EJB dont le transactionMode est a requires_new...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
@TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW)
	public void findNewRequestsAndSend() {
La première me retourne bien les données attendue, par contre la deuxième, n'insére rien et n'update rien. C'est comme si il y avait un rollback mais je n'ai pas d'exception visible en console.


Est ce que quelqu'un à une idée ?