Java 如何使@manytone实体成为hibernate中类的Id
我有一个问题,并且已经试过分配解决它的方法 问题很简单,我如何使用项目ID和金额作为主键 因为这会使物品变成一个小斑点。如果我使用@MapsId,它会给出完全相同的结果Java 如何使@manytone实体成为hibernate中类的Id,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个问题,并且已经试过分配解决它的方法 问题很简单,我如何使用项目ID和金额作为主键 因为这会使物品变成一个小斑点。如果我使用@MapsId,它会给出完全相同的结果 @Entity public class C_Drop extends LightEntity implements Serializable { @Id @ManyToOne private C_Item item; @Id private double amount; } @Ent
@Entity
public class C_Drop extends LightEntity implements Serializable {
@Id
@ManyToOne
private C_Item item;
@Id
private double amount;
}
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class C_Drops extends LightEntity implements Serializable {
@Id
double id;
@OneToMany
private List<C_Drop> drops;
}
@实体
公共类C_Drop扩展了Lightetity实现了可序列化{
@身份证
@许多酮
私人C_项目;
@身份证
私人双倍金额;
}
@实体
@继承(策略=继承类型。每个类的表)
公共类C_实现了可序列化{
@身份证
双id;
@独身癖
私人名单下降;
}
我自己并没有这样做,但您可能会使用a和double映射列的组合。e、 g:
@Entity
@IdClass(C_DropPK.class)
public class C_Drop extends LightEntity {
@Id
private double amount;
@Id
@Column(name = "ITEM_ID")
private double itemId;
@ManyToOne
@JoinColumn(name="ITEM_ID")
private C_Item item;
}
然后:
这对我来说没有多大意义。多对一关系意味着许多派生记录映射到一个
C_项
,这意味着在派生端,C_项
不会是唯一的。这使得id毫无用处,因为一个项目可以有多个项目列为drop。然后,另一个项目也可以将其列为drop。然后另一个项目将其列为下降,但下降了其他金额。比如:药盒A滴1瓶红色药水,药盒B滴2瓶红色药水,药盒C再滴1瓶红色药水。
public class C_DropPK {
private double itemId;
private double amount;
}