2017-02-22 1 views
0

J'utilise Wildfly 10 avec Deltaspike et j'ai des problèmes de persistance d'une entité. Le problème survient plus tard lorsque j'essaie de l'actualiser ou de persister dans une autre entité qui s'y réfère. Lorsque j'essaie de l'actualiser, j'obtiens l'exception indiquant que l'entité n'est pas gérée. Si j'essaie de persister une autre entité en le référençant, c'est quand j'obtiens l'exception indiquant que l'entité est dans un état transitoire. J'utilise JTA et l'entité aurait dû être validée plus tôt car elle a été enregistrée dans un autre appel de méthode.Wildfly - deltaspike - transaction non engagée?

J'ai essayé d'utiliser des transactions gérées par conteneur et des transactions gérées par bean. Sur cette note, il semble que seul le fichier apache-deltaspike.properties a un effet sur la modification de cela. J'ai également activé manuellement l'intercepteur de transaction, mais je ne crois pas que cela fasse une différence car il est activé avec ou sans activation explicite dans beans.xml. L'annotation @Transactional ne semble pas réellement valider la transaction (j'ai testé en utilisant divers arguments et je m'attendais à une exception différente, mais juste la même).

@Transactional(Transactional.TxType.REQUIRES_NEW) 
//@Transactional(Transactional.TxType.NEVER) 
@Loggable 
protected void startSession() { 
    entity = new Entity("something"); 
    LOGGER.warn("entity:" + entity); 
    entityRepository.saveAndFlushAndRefresh(entity); 

    LOGGER.warn("end - entity:" + entity.getId()); 
} 

Les instructions de journal montrent que l'ID est 0, non défini. Maintenant, si je fais une recherche de la séquence, je vois qu'il est à 189 d'être frappé tant de fois ...

L'exception est réelle lorsque je tente de faire:

entityRepository.refresh(entity); 

C'est quand je reçois le exception indiquant que l'entité n'est pas gérée. Comme je l'ai indiqué, je peux voir l'Intercepteur de transaction est activé en fonction des journaux.

Des idées?

Répondre

0

Le problème semble être dans les versions plus récentes d'Hibernate, vous ne pouvez pas utiliser un type primitif pour les champs id/version.

Je suis maintenant capable de sauvegarder des entités.