Bazı yapılandırma dosyalarındaki tüm varlıkları (@Entity) listelemeye gerek kalmadan, açıklamalı sınıflardan bir veritabanı şeması oluşturmak için hazırda bekletme araçları hbm2ddl görevini çağırmak için bir başka eklenti veya başka bir araç var mı? Sınıf içinde keşfettiler mi? Hazırda bekletme 5 için, ancak Hazırda Bekletme 4 için de tercih edilir.Nottan hbm2ddl çağırma
cevap
Nihayet persistence.xml dosyasını hareket ettirerek bunu gerçekleştirdim.
Benim senaryoda, bazı kütüphane varlıkları ve bir şema oluşturmak istediğim bazı uygulama varlıkları var. Görünüşe göre persence.xml dosyasındaki kütüphane varlıklarını listelemem gerekiyor, ki bu da sık sık değişmediği için iyi, ancak uygulama varlıklarının kalıcılık dosyasında listelemeden sınıf yolundan alınabilmesi için bunu sağlamak zorunda kaldım. hem sınıflar hem de persistence.xml dosyası aynı classloader tarafından yüklendi (sanırım).
Bu işe yarıyor.
Kütüphane kişiler: MyCustomer, MyInvoice
Uygulama kişiler: MyBook,
/src/main/resources/META-INF/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_2_0.xsd"
version="2.0">
<persistence-unit name="defaultPersistenceUnit">
<!-- List the library classes only -->
<class>net.mylibrary.entity.MyCustomer</class>
<class>net.mylibrary.entity.MyInvoice</class>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="myusr"/>
<property name="hibernate.connection.password" value="mypwd"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/mydb"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
</persistence-unit>
</persistence>
build.gradle myBooking'e:
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
repositories {
jcenter()
mavenLocal()
}
dependencies {
compile ... my project dependencies ...
}
configurations {
hibtools
}
dependencies {
hibtools 'net.mylibrary:MyEntities:1.0' // Library for MyCustomer and MyInvoice
hibtools 'org.hibernate:hibernate-tools:4.+',
'mysql:mysql-connector-java:5.+'
hibtools files("$buildDir/classes/main") // MyBook and MyBooking
}
task createSchema(dependsOn: ['build', 'copyPersistenceUnit']) << {
ant.taskdef(name: 'hibernatetool',
classname: 'org.hibernate.tool.ant.HibernateToolTask',
classpath: configurations.hibtools.asPath)
ant.hibernatetool(destdir: 'schema') {
ant.jpaconfiguration(persistenceunit: 'defaultPersistenceUnit')
ant.hbm2ddl(drop: 'false', export: 'false', outputfilename: 'mydb.sql')
}
}
task copyPersistenceUnit(type: Copy) {
from "$buildDir/resources/main/META-INF/persistence.xml"
into "$buildDir/classes/main/META-INF/"
}
Sonuç, MyCustomer, MyInvoice, My için tablo içeren bir ddl'dir. Kitap, MyBooking, MyBook ve MyBooking, herhangi bir yerde listelenmemiş olsa bile ve yapılandırmaya dokunmadan eklenebilir veya silinebilir.
Buradaki hile, persistence.xml dosyasını kaynaklar klasöründen sınıf klasörüne kopyalamaktır.
hibtools files(["$buildDir/resources/main", "$buildDir/classes/main"])
ama bunu yaparken keşfedilen bulunan uygulama varlıkları önleyecektir: Bunu yapmazsanız , sahip olmak için bu gibi bir şey ile hibtools yapılandırmasına kaynaklar yolunu eklemeniz gerekir bulundu.
Bu Hazırda Bekletme 4 ile çalışır. Geçerli Hazırda 5 alfa aracını kullanarak boş bir ddl dosyası verir.
- 1. Tablo, hibernate's hbm2ddl tarafından oluşturulmamış
- 2. PureScript'te bir not değerinin bir nottan nasıl döndürebilirim?
- 3. Vertx kullanarak REST API'lerini Çağırma/Çağırma/Tüketme
- 4. XS'de Geri Çağırma geri çağırma oluşturma
- 5. çağırma uygulaması
- 6. MediaPlayer.PrepareAsync öğesini VideoView'dan çağırma
- 7. NodeJS'den PowerShell'i Çağırma
- 8. Python'u PHP'de Çağırma
- 9. Saklı yordamı çağırma VBA
- 10. Özel Geri Çağırma İşleyicisi
- 11. Viewmodel'den çağırma yöntemi
- 12. Angular2'de Servis Çağırma
- 13. ColdFusion'dan bir .jar çağırma
- 14. AssertWasRino alaylarında çağırma
- 15. Python işlevlerini çağırma C++
- 16. Saatten işlev çağırma nasıl?
- 17. DWARF bilgilerinden çağrıları çağırma
- 18. Perl'de temel yapıcı çağırma
- 19. WPF bir kontrol çağırma
- 20. Geçersiz bir yöntem çağırma
- 21. Çapraz denetleyici işlevini çağırma
- 22. Bir üye işlevini çağırma
- 23. Aynı Sınıfta Dize Çağırma
- 24. Genel türünde yöntem çağırma?
- 25. Yüzde rasgele işlev çağırma?
- 26. RMI çağırma ile ClassLoader
- 27. clang ++ C++ 11 çağırma
- 28. JPA içinde çağırma yöntemi
- 29. Dizelerle php yöntemlerini çağırma
- 30. Platform Çağırma, bool, ve dize