Besoin d'un exemple de clé primaire @OneToOne de cartographie en mode veille prolongée
Quelqu'un peut-il me donner un exemple de unidirectionnel @OneToOne de clé primaire de la cartographie en veille prolongée ? J'ai essayé de nombreuses combinaisons, et jusqu'à présent, la meilleure chose que j'ai obtenu est: est-ce
@Entity
@Table(name = "paper_cheque_stop_metadata")
@org.hibernate.annotations.Entity(mutable = false)
public class PaperChequeStopMetadata implements Serializable, SecurityEventAware {
private static final long serialVersionUID = 1L;
@Id
@JoinColumn(name = "paper_cheque_id")
@OneToOne(cascade = {}, fetch = FetchType.EAGER, optional = false, targetEntity = PaperCheque.class)
private PaperCheque paperCheque;
}
Chaque fois que Hibernate essaie de générer automatiquement le schéma ci-dessus pour la cartographie, il tente de créer la clé primaire comme un blob, au lieu d'un, ce qui est l'id de type de PaperCheque. Quelqu'un peut-il m'aider ? Si je ne peux pas obtenir une solution exacte, quelque chose de proche, mais j'apprécierais une réponse.
OriginalL'auteur Alex Marshall | 2008-11-24
Vous devez vous connecter pour publier un commentaire.
Votre intention est d'avoir une relation 1-1 entre PaperChequeStopMetaData et PaperCheque? Si c'est le cas, vous ne pouvez pas définir la PaperCheque instance que l' @Id de PaperChequeStopMetaData, vous devez définir un distinct @colonne Id dans PaperChequeStopMetaData.
OriginalL'auteur David M. Karr
J'ai sauvé cette discussion quand j'ai mis en place un couple de @OneToOne mappages, je l'espère, il peut être utile à vous aussi, mais nous ne pouvons pas laisser Hibernate créer la base de données pour nous.
Note le GenericGenerator annotation.
De toute façon, j'ai ce code de travail:
OriginalL'auteur activout.se
Merci à vous deux pour vos réponses. J'ai continué à expérimenter, et voici ce que j'ai obtenu de travail :
C'est, par tous les moyens, un répugnant hack, mais c'est moi tout ce que je voulais. Le paperCheque accesseurs de propriété sont comme normale (non illustré). J'ai rencontré ce genre de unidirectionnel OneToOne problème de mappage avant et réglé pour la pire des solutions, mais cette fois j'ai décidé que j'allais comprendre, j'ai donc gardé le piratage. Encore une fois, merci à vous deux pour vos réponses, c'est très apprécié.
OriginalL'auteur Alex Marshall
Juste la mise à jour de cette question pour les futurs points de vue.
Lorsque cette question a été fait, je pense qu'il n'était pas une bonne solution pour ce problème. Mais depuis JPA 2.0, vous pouvez utiliser @MapsId pour résoudre ce problème.
De référence avec une bonne explication: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/
OriginalL'auteur Ítalo Vieira
Vous devriez rester loin de hibernate OneToOne de cartographie, il est très dangereux. voir http://opensource.atlassian.com/projects/hibernate/browse/HHH-2128
vous êtes mieux d'utiliser ManyToOne mappages.
OriginalL'auteur Pat