java – JPA:@Embeddable对象如何获得对其所有者的引用?
发布时间:2020-12-14 05:43:02 所属栏目:Java 来源:网络整理
导读:我有一个User类,@Embedded一个类Profile.如何给Profile的实例给它的所有者User类引用? @Entityclass User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Embedded Profile profile; // .. othe
我有一个User类,@Embedded一个类Profile.如何给Profile的实例给它的所有者User类引用?
@Entity class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Embedded Profile profile; // .. other properties .. } @Embeddable class Profile implements Serializable { User user; // how to make this work? setURL(String url) { if (user.active() ) { // for this kind of usage // do something } } // .. other properties .. } 解决方法
假设JPA而不是严格的Hibernate,你可以通过将@Embedded应用于getter / setter对而不是私有成员本身来实现.
@Entity class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Access(AccessType.PROPERTY) @Embedded private Profile profile; public Profile getProfile() { return profile; } public void setProfile(Profile profile) { this.profile = profile; this.profile.setUser(this); } // ... } 但是,在这种情况下,我会质疑嵌入式实体是否是您想要的,而不是@OneToOne关系,或者简单地将“简档”类放入“用户”. @Embeddable的主要理由是代码重用,在这种情况下似乎不太可能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |