về cơ bản, những gì tôi muốn làm là gán thuộc tính 'unitName' của @PersistenceContext với một giá trị mà tôi sẽ nhận được từ các phiên khi chạy.động @PersistenceContext unitName thuộc tính cho container dựa trên EntityManager
chi tiết;
đơn đăng ký của tôi sẽ là ứng dụng SaaS và tôi sẽ có các DB riêng biệt cho mọi người thuê khác nhau. Tôi đang sử dụng Glassfishv3 và quản lý các đối tượng dựa trên vùng chứa vì vậy tôi không nhận được bất kỳ cá thể nào từ EntityManagerFactory một cách rõ ràng. Tất cả những gì tôi đang làm để tạo ra một người quản lý thực thể là;
@PersistenceContext(unitName = "DBNAME")
private EntityManager entityManager;
tôi cần chuyển thuộc tính unitName theo người dùng hiện tại. nó không nên được mã hóa cứng.
Tôi đã cập nhật EclipseLink 2.3 nhưng tất cả những ví dụ đang tạo một thể hiện từ EMF mà bạn có thể vượt qua Bản đồ tài sản như
Map memberProps = new HashMap();
memberProps.put("memberPu1", props1);
memberProps.put("memberPu2", props2);
Map props = new HashMap();
props.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
props.put("eclipselink.composite-unit.properties", memberProps);
EntityManager em = emf.createEntityManager(props);
khó trong ứng dụng của tôi, container làm việc đó vì vậy tôi đang không có khả năng làm điều này
EntityManager em = emf.createEntityManager(props);
Mặc dù tôi có tất cả các đơn vị kiên trì và các lớp trong persistence.xml tôi bằng cách sử dụng định nghĩa JNDI, tôi không có khả năng t o nói với máy chủ ứng dụng mà DB (đơn vị bền vững) nó nên sử dụng đồng thời
bất kỳ trợ giúp sẽ được đánh giá cao
Câu hỏi này giúp tôi tìm giải pháp cho trường hợp tương tự. Tôi có thể sử dụng: http://stackoverflow.com/questions/5104185/how-to-inject-persistence-context-to-different-data-source-programmatically – Monnie