2009-02-10 9 views
1

J'ai une entité Promotion, qui a 3 champs simples (identifiant, nom, description) et tous les 3 seront mappés sur DB. Jusqu'ici tout va bien. Le problème est avec le 4ème champ, ruleModel, qui est une instance de RuleModel et lorsqu'il est construit à l'exécution, il contiendra des instances d'objets d'une douzaine d'autres classes. Je ne veux pas mapper RuleModel à une table DB, car c'est beaucoup de travail supplémentaire et inutile. Je veux juste stocker l'instance de l'objet ruleModel dans DB, puis pouvoir charger ruleModel à partir de DB et restaurer l'instance d'objet en mémoire.Comment stocker une instance d'objet en tant que champ d'une entité EJB3?

code:

@Entity 
public class Promotion { 
    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 
    private String description; 

    private RuleModel ruleModel; 

}

Répondre

0

Si vous faites la Règle modèle classe implémente l'interface Serializeable alors vous devriez être en mesure d'ajouter une variable RuleModel à votre classe de promotion. Cela nécessiterait l'ajout d'une nouvelle colonne à la table Promotion. Lorsque vous persistez dans la classe Promotion, l'instance sérialisée de l'instance de la classe RuleModel est stockée dans la nouvelle colonne.

0

Si je comprends bien, vous essayez de sérialiser l'RuleModel instance - qui contient des références à de nombreux autres cas - et quand vous désérialiser vous accepteriez que toutes les références ruleModel précédemment détenu serait perdu . Si ceci est votre objectif, vous devez faire deux choses:

  1. Marquer un champ dans RuleModel avec le transitoire qui
  2. Annoter RuleModel avec l'annotation JPA @Embeddable
  3. annoter les champ ruleModel dans promotion avec @Embedded

Bien que cela ne persistera pas l'ruleModel exemple dans une seule colonne, il persistera l'instance en plusieurs colonnes de la même table utilisée par Promotion. Il rétablira également ruleModel comme vous le souhaitez.

Questions connexes