इस persistence.xml
के साथ:<बहिष्कृत-असूचीबद्ध-वर्ग> झूठी</ बहिष्कृत-असूचीबद्ध-कक्षाएं> काम करने में विफल क्यों हो सकती हैं?
<?xml version="1.0" encoding="UTF-8" ?>
<persistence 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"
version="1.0">
<persistence-unit name="ODP_Server_Test"
transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<!-- <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/ODPServerDataSource)</non-jta-data-source> -->
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:unit-testing;create=true" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.target-database" value="DERBY" />
</properties>
</persistence-unit>
</persistence>
और एक साधारण परीक्षण:
public class RepositoryTest {
private static Logger logger = LoggerFactory
.getLogger(RepositoryTest.class);
private static EntityManagerFactory emf;
private EntityManager em;
private RepositoryImpl repo = new RepositoryImpl();
@BeforeClass
public static void setUp() {
try {
logger.info("Starting in-memory DB for unit tests");
@SuppressWarnings("unused")
Class<?> cls = org.apache.derby.jdbc.EmbeddedDriver.class;
DriverManager.getConnection(
"jdbc:derby:memory:unit-testing;create=true").close();
} catch (Exception ex) {
ex.printStackTrace();
fail("Exception during database startup.");
}
try {
logger.info("Building JPA EntityManager for unit tests");
emf = Persistence.createEntityManagerFactory("ODP_Server_Test");
} catch (Exception ex) {
ex.printStackTrace();
fail("Exception during JPA EntityManager instantiation.");
}
}
@AfterClass
public static void tearDown() throws SQLException {
logger.info("Shutting down JPA");
if (emf != null) {
emf.close();
}
try {
DriverManager.getConnection(
"jdbc:derby:memory:unit-testing;drop=true").close();
} catch (SQLException ex) {
if (ex.getSQLState().equals("08006")) {
logger.info("DB shut down");
} else {
throw ex;
}
}
fail("DB didn't shut down");
}
@Before
public void setEM() {
em = emf.createEntityManager();
repo.setEntityManager(em);
}
@After
public void flushEM() {
if (em != null) {
em.flush();
em.close();
em = null;
}
}
@Test
public void noBlocksInEmptyDB() {
assertThat(repo.findFunBlock(1), is((FunctionalBlock) null));
}
}
मैं
[ईएल चेतावनी]: 2012-04-17 15: 08: 18.476-- मेटामोडेल प्रकारों का संग्रह खाली है। मॉडल वर्गों को जावा एसई और कुछ जावा ईई कंटेनर प्रबंधित दृढ़ता इकाइयों के लिए इकाई खोज के दौरान नहीं मिला हो सकता है। कृपया देखें कि आपका इकाई वर्गों या तो
<class>
तत्वों या एक वैश्विक<exclude-unlisted-classes>false</exclude-unlisted-classes>
तत्व
<class>
तत्वों का एक बहुत कुछ के साथ <exclude-unlisted-classes>false</exclude-unlisted-classes>
बदलने के बाद, यदि समस्या ठीक किया जा सकता है का उपयोग कर persistence.xml में संदर्भित है, लेकिन मैं पसंद करते हैं नहीं करने के लिए हर बार जब मुझे कोई नई इकाई जोड़ने या पुराने को हटाने की आवश्यकता होती है तो persistence.xml
को संपादित करना याद रखना होगा। <exclude-unlisted-classes>
के साथ संस्करण क्यों काम नहीं करता है?
क्या आपकी 'persistence.xml' और एनोटेटेड कक्षाएं अलग-अलग क्लासपाथ फ़ोल्डर्स में समाप्त हो सकती हैं? Http://stackoverflow.com/questions/4885836/no-autodetection-of-jpa-entities-in-maven-verify – axtavt
देखें, यह काम करता है। धन्यवाद! (सिवाय इसके कि यह '$ {project.build.outputDirectory}' का विस्तार नहीं करेगा और मैंने इसे '../ कक्षाओं 'द्वारा प्रतिस्थापित किया है, थोड़ा बुरा है लेकिन अगर मुझे करना है तो मैं इसके साथ रह सकता हूं।) –
@axtavt आप चाहें इसे उत्तर के रूप में पोस्ट करने के लिए ताकि मैं इसे स्वीकार कर सकूं। –