cuốn sách gpt4 ai đã làm

Ngủ đông, đa luồng và CascadeType.ALL

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:29:23 hai mươi bốn 4
mua khóa gpt4 Nike

Trong môi trường đa luồng,

cái này hoạt động

Hộp hộp = Hộp mới("B");
Đồ chơi t1 = box.addNewToy("t1");
Đồ chơi t2 = box.addNewToy("t2");
được đồng bộ hóa (em) {
em.getTransaction().begin();
em.persist(t1);
em.getTransaction().commit();
}
được đồng bộ hóa (em) {
em.getTransaction().begin();
em.persist(t2);
em.getTransaction().commit();
}

nhưng đây không phải là

Hộp hộp = Hộp mới("B");
Đồ chơi t1 = box.addNewToy("t1");
được đồng bộ hóa (em) {
em.getTransaction().begin();
em.persist(t1);
em.getTransaction().commit();
}
Đồ chơi t2 = box.addNewToy("t2");
được đồng bộ hóa (em) {
em.getTransaction().begin();
em.persist(t2);
em.getTransaction().commit();
}

Tôi gặp các lỗi sau: "Đối tượng tham chiếu một phiên bản tạm thời chưa được lưu", "Một đối tượng khác có cùng giá trị nhận dạng đã được liên kết với phiên"

Có ý tưởng gì không?

Đây là một dự án Maven tối thiểu tái tạo vấn đề:http://www.2shared.com/file/bGLmJ6aO/example.html

Chi tiết

phiên bản java "1.7.0_17", ngủ đông 4.2.3.Final, Ubuntu 11.04 natty, SQLite

lớp đồ chơi {
@ManyToMany(mappedBy="toys",fetch = FetchType.LAZY, CascadeType.ALL)
Danh sách công khai getBoxes() { hộp trả lại }

public void setBoxes(List hộp) { this.boxes = hộp }
}

Hộp lớp {
@ManyToMany(tìm nạp = FetchType.LAZY, tầng = CascadeType.ALL)
public List getToys() { trả lại đồ chơi }

public void setToys(List Toys) { this.toys = đồ chơi }

public Toy addNewToy(Tên chuỗi) {
Đồ chơi đồ chơi = Đồ chơi mới();
đồ chơi.setName(tên);
đồ chơi.boxes.add (cái này);
đồ chơi.add(đồ chơi);
trả lại đồ chơi;
}
}

câu trả lời hay nhất

EntityManagerFactory là một đối tượng an toàn luồng, có chi phí tạo cao và được chia sẻ bởi tất cả các luồng ứng dụng. Nó được tạo một lần, thường là khi khởi động ứng dụng.

EntityManager là một giải pháp rẻ tiền, không an toàn theo chủ đề đối tượng nên được sử dụng một lần, cho một quy trình kinh doanh, một đơn vị công việc và sau đó bị loại bỏ ...

参见:http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html_single/#transactions-basics

Tôi không chắc chắn bạn đang làm gì, nhưng nếu bạn đang sử dụng cùng một Trình quản lý thực thể tĩnh từ nhiều luồng thì đây là vấn đề của bạn.

EntityManagerFactory là một đối tượng an toàn theo luồng mà bạn muốn chia sẻ, nhưng bạn nên tạo một EntityManager mới cho mỗi yêu cầu/đơn vị công việc đang được thực thi.

Về java - Hibernate, multi-threading và CascadeType.ALL, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/17983275/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress