2017-06-02 2 views
2

J'utilise Hibernate Envers:mappings Formula sont actuellement pas pris en charge - Hibernate ORM Envers

@Entity 
@Table(name = "user") 
@Audited 
class User() 
{ 
    private String id; 
    @Formula("(SELECT name FROM other c where c.id = id)") 
    private Integer name; 
} 

il lance:

[org/springframework/boot/autoconfiguration/ORM/JPA/HibernateJpaAutoConfiguration.class ]: L'appel de la méthode init a échoué; exception imbriquée est org.hibernate.envers.configuration.internal.metadata.FormulaNotSupportedException: cartographies de formule (à part @DiscriminatorValue) ne sont actuellement pas pris en charge

Comment calculer les attributs entité avec @Formula et Hibernate Envers?

FYI Lorsque je supprime Hibernate Envers, cela fonctionne correctement.

Répondre

4

Le problème est que vous demandez à Envers d'auditer une colonne annotée @Formula, qui n'est actuellement pas prise en charge. J'ai ouvert JIRA HHH-11785 dans le seul but de regarder dans ce plus loin. Cependant, vous devriez pouvoir annoter le champ de formule avec @NotAudited et Envers devrait s'intégrer parfaitement dans cette configuration. Le vrai problème est qu'il échoue lorsqu'il trouve que l'historique du champ basé sur une formule doit être suivi.

À titre d'exemple:

@Entity 
@Audited 
class User { 
    @Formula("SELECT name FROM Other ...") 
    @NotAudited 
    private String name; 
    // other attributes 
} 
+0

votre code me donne: h.engine.jdbc.spi.SqlExceptionHelper: Unknown column 'de user0_.name' dans 'liste des champs' exception imbriquée est javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: impossible d'extraire le jeu de résultats] – user3871754

+0

Avez-vous vérifié que votre formule est valide? Le seul code que je vous ai suggéré était de marquer le champ comme n'étant pas audité afin que Envers ait dépassé votre point d'échec. J'aurais besoin de plus de détails pour vous aider, mais il semblerait que certaines requêtes invalides soient en cours d'exécution. – Naros

+0

votre exemple ne fonctionne pas, j'ai ajouté le support comme ceci: @Formula ("(SELECT nom FROM Other ...)") et maintenant cela fonctionne – user3871754