Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使@manytone实体成为hibernate中类的Id_Java_Hibernate_Jpa - Fatal编程技术网

Java 如何使@manytone实体成为hibernate中类的Id

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

我有一个问题,并且已经试过分配解决它的方法

问题很简单,我如何使用项目ID和金额作为主键

因为这会使物品变成一个小斑点。如果我使用@MapsId,它会给出完全相同的结果

@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;
}