0
entitymanager.merge
和query.executeUpdate
有什么区别?entitymanager合并与执行更新之间的区别
我有一个实体才能
@Entity
@Table(name="ORDERS",schema ="AMZ")
public class Orders {
@Id
@SequenceGenerator(name = "pk_sequence", sequenceName = "ORDERS_SEQ", schema = "AMZ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_sequence")
@Column(name = "ORDERS_ID")
private long id;
@Column(name = "STATUS")
private Status status;
我有我的DAO类
@Repository
@Transactional
public class InvoiceDAO {
@PersistenceContext
private EntityManager entityManager;
public void update(Order order){
updateInvoice();
mergeInvoice(Order order);
}
public void updateInvoice(){
entitymanager.createQuery("update Orders set status = 'ERROR' where id=12").executeUpdate();
}
public void mergeInvoice(Order order){
entitymanager.merge(order);
}
}
在上面,合并executeUpdate();
之前发生,即使在它们之间进行更新几个交易的最后一笔交易发生。为什么?
我试过entityManager.flush();
但它没有工作。
发布调用上述方法的代码。 –
不确定你的代码,但你关于'merge'和'update'的问题:http://stackoverflow.com/questions/1069992/jpa-entitymanager-why-use-persist-over-merge *“合并创建一个您的实体的新实例,从提供的实体复制状态,并管理新的副本。“* – markspace