【问题标题】:JPA cascade merge does not persist attributeJPA级联合并不保留属性
【发布时间】:2013-10-14 11:45:12
【问题描述】:

我在 OpenJPA 2.0 上有一个实体

@Entity
@Table(name = "os_wfentry")
@SequenceGenerator(name = "jwe_seq", sequenceName = "jwe_seq", initialValue = 10, allocationSize = 1)
public class JPAWorkflowEntry implements WorkflowEntry, Serializable {

    private static final long serialVersionUID = -755511983025049452L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "jwe_seq")
    private long id;

    @Column(name = "name")
    private String workflowName;

    @Column(name = "state")
    private Integer workflowState;

    @Column(name = "version")
    private Integer version;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "entry")
    private final List<JPACurrentStep> currentSteps;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "entry")
    private final List<JPAHistoryStep> historySteps;

    public JPAWorkflowEntry() {
        currentSteps = new ArrayList<>();
        historySteps = new ArrayList<>();
    }

... 在我插入的 JPACurrent 和 JPAHistory 步骤中:

@ManyToOne
    @Column(name = "entry_id")
    protected JPAWorkflowEntry entry;

都是正确的(理论上);但是当我尝试保存(或更新)一个新的 JPAWorkflowStore 实例时,有一个非空的(当前或历史)步骤列表,步骤属性列表在 db 上不是持久化的,它始终是一个空列表。你能帮助我吗??我做错了什么??

【问题讨论】:

    标签: java persistence cascade openjpa


    【解决方案1】:

    您需要为您的 JPACurrent 和 JPAHistory 指定 @JoinColumn(name = "id", nullable = false)。

    你所做的是 @Column(name = "entry_id") 我没有看到 "entry_id" 映射到 JPAWorkflowEntry 中的任何列

    【讨论】:

    • 映射是一对多关系@OneToMany(cascade = CascadeType.ALL, mappedBy = "entry"),我的错误是我没有在currentStephistoryStep实体JPAWorkflowEntry的属性上添加@Column
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多