【发布时间】:2014-08-20 16:35:19
【问题描述】:
我正在使用下面的映射
@Entity
@Table(name = "test")
public class TestOrder implements Serializable {
@Id
@Column(name = "orderid", updatable = false)
protected Long orderId;
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name = "order_id_fk")
private List<TestDetails> details;
//getters and setters
}
@Entity
@Table(name="test_details")
public class TestDetails implements Serializable {
@Id
//Generator
@Column(name = "id", updatable = false, insertable = false)
protected Long id;
@Column(name="order_id_fk", updatable = false)
private Long orderId;
//getters and setters
}
当我更新/插入数据时,它会尝试将 order_id_fk 更新为 null
SQL [update test_details set order_id_fk'='null where order_id_fk'='? and id'='?]; constraint [null];
非常感谢任何帮助。
使用 Spring 集成更新/插入
<int-jpa:updating-outbound-gateway entity-class="com.aaaa.TestOrder" entity-manager-factory="myEntityManagerFactory" persist-mode="MERGE">
<int-jpa:transactional propagation="REQUIRED" transaction-manager="myTransactionManager" />
</int-jpa:updating-outbound-gateway>
【问题讨论】:
-
你能粘贴代码DAO吗?
-
@Pracede,我正在使用 spring 集成来插入/更新。更新操作
-
您是否在保存或更新之前设置了 TestOrder 及其属性详细信息?
-
@Pracede,是的。令人惊讶的是,它按预期首先插入数据。但之后它会尝试执行此更新查询
-
@ManyToOne 注释和
mappedBy哪里来?
标签: java spring hibernate jpa annotations