我创建了一个使用@Id指向@Embeddable复合键的实体。我相信的一切都可以正常工作。但是,在将@Id切换为@EmbeddedId之后,据我所知,一切都继续正常工作。之前:@EntitypublicfinalclassMyEntity{privateCompoundKeyid;@IdpublicCompoundKeygetId(){returnid;}publicvoidsetId(CompoundKeyid){this.id=id;}之后:@EntitypublicfinalclassMyEntity{privateCompoundKeyid;@EmbeddedIdpublicC
以下代码仅用于演示目的。我的Entitybean看起来像这样@EntityclassEmployee{@EmbeddedIdprivateEmployeeKeyemployeeKey;privateStringfirstName;privateStringlastName;//Otherfields//GetterandSetters}可嵌入类:@EmbeddableclassEmployeeKeyimplementsSerializable{privateintemployeeId;privateStringbranchName;privateStringdepartmentName
我在表HolidayPackageVariant中有一个复合主键(IDHOLIDAYPACKAGE,IDHOLIDAYPACKAGEVARIANT),其中IDHOLIDAYPACKAGE指的是实体HolidayPackageHolidayPackageVariant和HolidayPackage之间存在Many到One关系。当我尝试在HolidayPackageVariant中进行复合PK映射时,出现以下错误:InitialSessionFactorycreationfailed.org.hibernate.annotations.common.AssertionFailure:Dec
JPA(JavaPersistenceAPI)规范有2种不同的方式来指定实体复合键:@IdClass和@EmbeddedId。我在我的映射实体上使用了这两个注解,但对于那些不太熟悉JPA的人来说,这真是一团糟。我只想采用一种方式来指定复合键。哪一个真的是最好的?为什么? 最佳答案 我认为@EmbeddedId可能更冗长,因为使用@IdClass您无法使用任何字段访问运算符访问整个主键对象。使用@EmbeddedId你可以这样做:@EmbeddableclassEmployeeId{name,dataOfBirth}@Entitycl