【问题标题】:OneToMany with @EmbeddedId and kunderaOneToMany 与 @EmbeddedId 和 kundera
【发布时间】:2016-09-06 19:50:03
【问题描述】:

我有两个班级,我想使用与 EmbeddedId 的 OneToMany 关系 (我正在使用 kundera 框架) 我的传感器实体类:

public class SensorEntitie implements Serializable {
    @EmbeddedId
    private CompoundKey key;
    @Column
    private float temperature;
    @Column
    private float pressure;

    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
    @JoinColumn(name="what I should to put here")
    private List<PieceEntitie> pieces;
}
@Embeddable
    public class CompoundKey
    {
        @Column 
        private String IdSensor;           
        @Column 
        private long date;           
        @Column(name = "event_time")
        private long eventTime;

我的棋类实体

public class PieceEntitie implements Serializable{

    /**
     * 
     */
    @Id
    private String IdPiece;
    @Column
    private double width;
    @Column
    private double height;
    @Column
    private double depth;

但是我如何填写@JoinColumn 中的空白

【问题讨论】:

    标签: java hibernate cassandra kundera


    【解决方案1】:

    我找到了解决方案: 要使用与 EmbeddedId 的 OneToMany 关系,我应该声明 JoinColumnsJoinColumn

    的倍数
    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
        @JoinColumns({
            @JoinColumn(name = "idsensor", referencedColumnName = "idsensor"),
            @JoinColumn(name = "date", referencedColumnName = "date"),
            @JoinColumn(name = "event_time", referencedColumnName = "event_time")
    })
    

    【讨论】:

    • 虽然通常 mappedBy 可以工作,但在某些情况下需要 @JoinColumns,例如一个表中的复合键是 @ManyToOne 中另一个表中主键的一部分。很遗憾 JPA 没有对此的支持(或者如果支持,我还没有发现这种魔力)。
    【解决方案2】:

    您需要执行以下一些步骤来解决问题

    1. 删除您不需要编写该语句的@JoinColumn
    2. 删除@OneToMany 到创建的对象
    3. 根据我的以下代码将@OneToMany 与getter 方法绑定
     @OneToMany(mappedBy = "pieceEntitie", cascade = CascadeType.ALL, 
     fetch=FetchType.EAGER)
    
        public Set<PieceEntitie> getPieceEntitie() {
                return pieceEntitie; 
        }
    

    【讨论】:

    • 我尝试了您的解决方案,并修复了一些问题,但这并没有改变任何东西,我的框架将数据保存到单独的表中,两个表之间没有任何关系,所以我无法获得所有与我的传感器表关联的数据
    猜你喜欢
    • 2019-08-21
    • 2018-08-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多