v.ladynevによって提案されている2つのアプローチは良好です。ただし、自分でConfiguration
とSession
を作成することをコントロールしたくない場合は、次の操作を行うことができます。
hibernate-cfg.xml
では、 <property name="hibernate.archive.scanner" value="com.custom.CustomEntityScanner" />
そしてCustomEntityScanner
実装は次のようなものになり、カスタムスキャナを追加する必要があります。あなたはカスタムパッケージをnon-root
urlsに追加するだけです。それ以外のものは、AbstractScannerImplからのコピーのようなものです。
public class CustomEntityScanner extends AbstractScannerImpl {
private final ArchiveDescriptorFactory archiveDescriptorFactory;
public CustomEntityScanner() {
this(StandardArchiveDescriptorFactory.INSTANCE);
}
protected CustomEntityScanner(ArchiveDescriptorFactory archiveDescriptorFactory) {
this.archiveDescriptorFactory = archiveDescriptorFactory;
}
@Override
public ScanResult scan(ScanEnvironment environment, ScanOptions options, ScanParameters parameters) {
final ScanResultCollector collector = new ScanResultCollector(environment, options, parameters);
//this is specific to your implemenation
List<URL> paths = Lists.newArrayList();
// ClasspathHelper is from Reflections library.
paths.addAll(ClasspathHelper.forPackage("your.custom.package"));
environment.getNonRootUrls().addAll(paths);
inal ArchiveContext context = new ArchiveContextImpl(false, collector);
for (URL url : environment.getNonRootUrls()) {
final ArchiveDescriptor descriptor = buildArchiveDescriptor(url, false);
descriptor.visitArchive(context);
}
if (environment.getRootUrl() != null) {
final ArchiveContext context = new ArchiveContextImpl(true, collector);
final ArchiveDescriptor descriptor = buildArchiveDescriptor(environment.getRootUrl(), true);
descriptor.visitArchive(context);
}
return collector.toScanResult();
}
}
「[]の要素はpersistence.xmlには必要ですか?](http://stackoverflow.com/questions/1780341/do-i-need-class-elements-in-persistence-xml) –
@ScottSosna - 私は 'persistence.xml'ファイルを使用していません。 ** hibernate.cfg.xmlファイルに ' 'を何とか使用できますか? –
Ascalonian
わからない、しばらくのうちに休止状態の設定ファイルを使用していない、明らかにそのショットを与え、それが動作するかどうかを確認してください。 –