我有 orm.xml 文件,可以为所有实体全局注册 AuditingEntityListener 。
// orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
version="2.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<entity-listeners>
<entity-listener
class="org.springframework.data.jpa.domain.support.AuditingEntityListener" />
</entity-listeners>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
我知道我们可以使用带注释的抽象映射超类。但我不希望我的实体类扩展类。我正在使用kotlin数据类为实体类建模。
@MappedSuperClass
@EntityListeners(AuditingEntityListener.class)
public abstract class AbstractEntity {}
有没有办法在不使用带有java config的orm.xml的情况下注册这个实体监听器?
答案 0 :(得分:0)
您可以在EventListenerRegistry上注册EntityListeners。
只需打开SessoinFactory,就像:
SessionFactoryImplementor sessionFactory = entityManagerFactory.unwrap(
SessionFactoryImplementor.class );
sessionFactory
.getServiceRegistry()
.getService( EventListenerRegistry.class )
.prependListeners( EventType.LOAD, new SecuredLoadEntityListener() );