2011-02-15 15 views
7

मेरे पास एक जावा ईई एप्लिकेशन है जो कि कुछ इकाई वर्गों के साथ टोमकैट पर चल रहा है और eclipselink 2.1 और jpa 2.0 का उपयोग कर रहा है। संस्थाएं ईमेल नोटिफिकेशन और ईमेल नॉटिफिकेशन्यूयूयूआरओ हैं।इकाई बुनाई नहीं है। Eclipselink 2.1 + गतिशील बुनाई

@Entity 
public class EmailNotification implements Serializable, IEntity<Integer> { 
private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO, generator = "emailGen") 
@SequenceGenerator(name = "emailGen", sequenceName = "SQ_EMAIL_NOTIFICATIONS", allocationSize=1) 
@Basic(optional = false) 
@Column(name = "EMAIL_ID") 
private Integer emailId; 
@Basic(optional = false) 
@Column(name = "EMAIL_SUBJECT") 
private String emailSubject; 
@Basic(optional = false) 
@Column(name = "EMAIL_BODY") 
private String emailBody; 
@Basic(optional = false) 
@Column(name = "SENT_FROM_EMAIL_ADDRESS") 
private String sentFromEmailAddress; 
@Column(name = "SEND_TO_ORG_ID") 
private Integer sendToOrgId; 
@Column(name = "SEND_TO_EMAIL_ADDRESS") 
private String sendToEmailAddress; 
@Column(name = "CARBON_COPY_ORG_ID") 
private Integer carbonCopyOrgId; 
@Column(name = "CARBON_COPY_EMAIL_ADDRESS") 
private String carbonCopyEmailAddress; 
@Column(name = "BCC_ORG_ID") 
private Integer bccOrgId; 
@Column(name = "BCC_EMAIL_ADDRESS") 
private String bccEmailAddress; 
@Column(name = "PROJECT_ID") 
private Integer projectId; 

//getters and setters 
} 

@Entity 
public class EmailNotificationQueueRow implements Serializable, IEntity<Integer> { 

private static final long serialVersionUID = 1L; 
@Id 
@Basic(optional = false) 
@Column(name = "EMAIL_QUEUE_ID") 
private Integer emailQueueId; 
@Basic(optional = false) 
@Column(name = "EMAIL_ID") 
private int emailId; 
@Basic(optional = false) 
@Column(name = "REQUEST_DATE") 
@Temporal(TemporalType.TIMESTAMP) 
private Date requestDate; 
@Basic(optional = false) 
@Column(name = "MESSAGE_SENT_FLAG") 
private String messageSentFlag; 
@Column(name = "MESSAGE_SENT_DATE") 
@Temporal(TemporalType.TIMESTAMP) 
private Date messageSentDate; 
@JoinColumn(name = "EMAIL_ID", referencedColumnName = "EMAIL_ID", updatable = false, insertable = false) 
@OneToOne(fetch = FetchType.LAZY) 
private EmailNotification emailNotification; 

//getters and setters 
} 

जब भी मैं FetchType.LAZY को emailNotification चर के संबंध सेट (ऊपर के रूप में) वर्ग बुना नहीं है। यह बुनाई के लिए पंजीकृत है लेकिन कभी नहीं है।

लॉग नीचे है। ईमेल नोटिफिकेशन इकाई बुनाई है लेकिन ईमेल नॉटिफिकेशन्यूयूयूआरओ इकाई नहीं है। कोई विचार?

[EL Config]: 2011-02-15 14:21:13.642--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--The access type for the persistent class [class persistence.model.EmailNotification] is set to [FIELD]. 
[EL Config]: 2011-02-15 14:21:13.674--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--The access type for the persistent class [class persistence.model.EmailNotificationQueueRow] is set to [FIELD]. 
[EL Config]: 2011-02-15 14:21:13.674--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--The target entity (reference) class for the one to one mapping element [field emailNotification] is being defaulted to: class persistence.model.EmailNotification. 
[EL Config]: 2011-02-15 14:21:13.689--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--The alias name for the entity class [class persistence.model.EmailNotification] is being defaulted to: EmailNotification. 
[EL Config]: 2011-02-15 14:21:13.72--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--The alias name for the entity class [class persistence.model.EmailNotificationQueueRow] is being defaulted to: EmailNotificationQueueRow. 
[EL Finer]: 2011-02-15 14:21:13.736--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Class [persistence.model.EmailNotification] registered to be processed by weaver. 
[EL Finer]: 2011-02-15 14:21:13.799--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Class [persistence.model.EmailNotificationQueueRow] registered to be processed by weaver. 
[EL Finest]: 2011-02-15 14:21:13.799--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--End predeploying Persistence Unit iDMS_Persistence_Unit; session file:/C:/idms/build/web/WEB-INF/classes/_iDMS_Persistence_Unit; state Predeployed; factoryCount 1 
[EL Finest]: 2011-02-15 14:21:13.908--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Begin weaver class transformer processing class [persistence/model/EmailNotification]. 
[EL Finest]: 2011-02-15 14:21:13.924--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Weaved persistence (PersistenceEntity) [persistence/model/EmailNotification]. 
[EL Finest]: 2011-02-15 14:21:13.924--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Weaved change tracking (ChangeTracker) [persistence/model/EmailNotification]. 
[EL Finest]: 2011-02-15 14:21:13.986--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--Weaved fetch groups (FetchGroupTracker) [persistence/model/EmailNotification]. 
[EL Finest]: 2011-02-15 14:21:13.986--ServerSession(1191324)--Thread(Thread[main,5,main]) 
--End weaver class transformer processing class [persistence/model/EmailNotification]. 

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
    <persistence-unit name="iDMS_Persistence_Unit" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/dms</jta-data-source> 
    <class>persistence.model.EmailNotification</class> 
    <class>persistence.model.EmailNotificationQueueRow</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
    <property name="eclipselink.weaving" value="true"/> 
    <property name="eclipselink.cache.shared.default" value="false"/> 
    <property name="eclipselink.logging.level" value="FINEST"/> 
    </properties> 
</persistence-unit> 
</persistence> 

अद्यतन

मैं eclipselink javaagent स्ट्रिंग का उपयोग कर रहा बिल्ला शुरू करने। इसके अलावा अन्य वनटोन मैपिंग भी हैं जो मेरी परियोजना में आलसी हैं जो बुनाई प्राप्त करते हैं। इसकी केवल एक ही कक्षा (ईमेल नॉटिफिकेशन क्यूयूआरओ) जो बुनाई नहीं होती है।

+0

क्या आप कोशिश कर सकते हैं कि किसी भी झूठे बदलावों के लिए OneToOne पर JoinColumn या 'वैकल्पिक' पर 'शून्य' सेटिंग सेट करें? इसके अलावा, आप ग्रहण लिंक का कौन सा संस्करण उपयोग कर रहे हैं? –

उत्तर

4

पर एक नजर है मैं कुछ संदेह में हूँ । आप कहते हैं कि आप टोमकैट में जावा ईई एप्लीकेशन का उपयोग कर रहे हैं? मुझे समझ में नहीं आता, टोमकैट सिर्फ एक वेब कंटेनर है, जावा ईई सर्वर नहीं?

एक अनुपालन जावा ईई सर्वर तैनाती के दौरान प्रबंधित जेपीए इकाइयों के बुनाई की अनुमति देगा, लेकिन टॉमकैट जावा ईई सर्वर नहीं है।

मुझे यकीन नहीं है कि टॉमकैट का उपयोग करके -जावाजेंट टॉमकैट कक्षाओं को लोड करने के तरीके के साथ काम करेगा। मुझे लगता है कि आपको टोमकैट के साथ स्थैतिक बुनाई का उपयोग करना चाहिए, या शायद वसंत का उपयोग करना चाहिए। सुनिश्चित नहीं है कि आपके पास कुछ कक्षाएं कैसे काम कर रही हैं? क्या आप वाकई गतिशील रूप से बुनाई जा रहे हैं? शायद टॉमकैट कक्षाओं को लोड करने के तरीके से संबंधित है, क्या वे उसी तरह तैनात हैं?

+0

एक जावाजेंट सभी वर्गों को लोड किए जाने के रूप में रोक सकता है और इसलिए जावा से पर्यावरण में भी गतिशील बुनाई की अनुमति देता है।उदाहरण के लिए देखें http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#How_to_Configure_Dynamic_Weaving_for_JPA_Entities_Using_the_EclipseLink_Agent –

+0

मैं स्थैतिक बुनाई का उपयोग कर समाप्त हुआ। अजीब हिस्सा था गतिशील बुनाई अन्य वर्गों पर जावाजेंट के साथ काम कर रहा था लेकिन ईमेल नॉटिफिकेशन क्यूयूआरओ नहीं। स्थिर बुनाई के साथ यह सभी वर्गों पर काम किया। अभी भी अनिश्चित क्यों है, लेकिन मैं इसे जेएमई के अनुरूप नहीं होने पर टॉमकैट तक चकित करूंगा। – joekarl

3

कृपया सुनिश्चित करें कि आप JVM को EclipseLink एजेंट कहा, अधिक जानकारी के लिए JVM पैरामीटर

-javaagent:eclipselink.jar 

का उपयोग कर, कृपया EclipseLink documentation

+0

दुर्भाग्य से मैं पहले से ही हूं। प्रोजेक्ट में कहीं और मेरे पास कुछ आलसी लोडिंग एक मैपिंग है और वे ठीक काम करते हैं। इसकी सिर्फ ईमेल नोटिफिकेशन क्यूयूरो इकाई को मैप नहीं किया जाता है। मैं इस जानकारी को शामिल करने के लिए अपना प्रश्न अपडेट करूंगा .... – joekarl

3

टोमकैट लोड-टाइम बुनाई के बारे में क्या? मुझे लगता है कि यह सबसे अच्छा तरीका है। मैंने सफलतापूर्वक इसे टॉमकैट 6/7 के साथ उपयोग किया।
http://static.springsource.org/spring/docs/2.0.x/reference/orm.html#orm-jpa
अध्याय
"12.6.1.3.1। बिलाव लोड समय बुनाई सेटअप (5.0+)"

+0

यहां वर्तमान दस्तावेज के लिए एक अद्यतन है: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#orm-jpa-setup-lcemfb – Hartmut

1

यहाँ अपनी परियोजना में dynamic weaving सक्षम करने के लिए एक पूर्ण समाधान है, यह भी दिखाता है कि कैसे के रूप में स्थिर बुनाई सक्षम करने के लिए कुंआ।