相关疑难解决方法(0)

使用带有spring 3.1.0.release的hibernate 4.0的eventlisteners?

这些罐子都是新发布的,并且拥有最新的Java EE应用程序解决方案.但是我在hibernate.cfg.xml中指定hibernate监听器时遇到了问题.

在春季3.1.0之前,LocalSessionFactroyBean持有一个保存eventlisteners的属性.但是使用3.1.0.release没有eventlisteners地图.现在我无法在saveorupdate,postload等上保持模态对象的跟踪,因为它们不是由Spring配置的.你有想法解决这个问题吗?

java event-listener spring-3 hibernate-4.x

19
推荐指数
2
解决办法
3万
查看次数

过去如何设置@CreatedDate(用于测试)

我的spring-data-jpa后端有一个类,它用大量测试数据填充(测试)数据库。该类使用 spring 数据存储库来创建实体。我所有的实体都有一个注释的字段@CreatedData@EntityListeners(AuditingEntityListener.class)模型类上的相应注释。到目前为止,这工作正常。dateCreated 会自动正确设置。

但是在运行Junit 测试时,我有时需要使用过去的 dateCreated 创建一个(测试)对象。我该如何存档?只能通过普通的JDBC?

testing spring jpa spring-data-jpa

9
推荐指数
2
解决办法
3293
查看次数

多模块Maven项目中的Spring Security(在哪里放置DB auth,UserDetails等?)

目前我们有6个Maven模块:

  • webapp
  • security
  • core(提供数据库访问User)
  • common
  • module1
  • module2

我认为依赖树非常明显:

  • webapp 取决于一切
  • security 取决于核心
  • core 取决于共同点
  • common 什么都不依赖
  • module1 取决于核心和共同点
  • module2 取决于核心,module1和common

现在我想要一些BaseEntity:它应该有一个@PrePersist可以节省电流User.几乎每个实体都会使用它BaseEntity.这就是每个模块依赖的原因core.

而且因为一切都依赖于core,将这BaseEntity也放在core模块中似乎是合乎逻辑的.(即使我更喜欢使用common它,但由于依赖性,这似乎是不可能的).

现在出现问题:要设置当前用户,我必须使用访问权限SecurityContextHolder.getContext().getAuthentication().getPrincipal().但是有了这个,我会有一些不必要的依赖(或者我只是太挑剔了?).

如果我想要自定义实现,问题会变得更糟UserDetails.我应该把它放在哪里?core还是security?或者让User实体实施UserDetails是否常见?我不这么认为.问题出现了,因为在验证用户时,我必须UserDetailssecurity模块内创建对象.当我想要检索当前时,User我必须将getPrincipal()方法强制转换为自定义UserDetails类.

我真的很困惑如何松散耦合,但也实现了应用程序所需的一切.

我想到的最后一个想法是关于使用依赖注入,但我不知道它是否有效!?(在模块中有一个currentUserBean security,其他人都可以通过它获得它@Autowired MyCustomUserDetails)

所以请帮我把这些东西弄好!

谢谢! :)

spring dependencies spring-security maven multi-module

8
推荐指数
1
解决办法
960
查看次数

Spring数据JPA:如何启用级联删除而不引用父级中的子级?

也许这是一个过于简单的问题,但是当我尝试删除用户实体时,我遇到了异常.

用户实体:

@Entity
@Table(name = "users")
public class User 
{
    @Transient
    private static final int SALT_LENGTH = 32;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @NotNull
    private String firstName;

    @NotNull
    private String lastName;

    @Column(unique = true, length = 254)
    @NotNull
    private String email;

    // BCrypt outputs 60 character results.
    @Column(length = 60)
    private String hashedPassword;

    @NotNull
    private String salt;

    private boolean enabled;

    @CreationTimestamp
    @Temporal(TemporalType.TIMESTAMP)
    @Column(updatable = false)
    private Date createdDate;
Run Code Online (Sandbox Code Playgroud)

我有一个实体类,它引用具有外键的用户.我想要发生的是,当用户被删除时,任何PasswordResetToken引用该用户的对象也将被删除.我怎样才能做到这一点?

@Entity
@Table(name = "password_reset_tokens")
public class PasswordResetToken …
Run Code Online (Sandbox Code Playgroud)

java mysql jpa spring-data-jpa spring-boot

6
推荐指数
2
解决办法
9502
查看次数

如何在EntityListeners中注入EntityManager

我需要在EntityListener类中注入EntityManager,以便我可以对它执行CRUD操作.

POJO:

@Entity
@EntityListner(AuditLogging.class)
class User
{
      //Getter / setter of properties
}
Run Code Online (Sandbox Code Playgroud)

AuditLogging(Listner类)

public class AuditInterceptor
{

  @PersistenceContext
  EntityManager entityManager;

  public void setEntityManager(EntityManager entityManager)
  {
    this.entityManager = entityManager;
  }

  @PrePersist
  public void prePersist(Object obj)
  {
     // Here I want to use ENTITY manager object so that I can perform CRUD operation
     // with prePersist coming object.

      entityManager.unwrap(Session.class).save(obj);

     // But I am getting NULL POINTER EXCEPTION for entity manager object 
   }
Run Code Online (Sandbox Code Playgroud)

}

JDBC-config.xml中

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" /> …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc spring-data-jpa

4
推荐指数
2
解决办法
4711
查看次数

在JPA实体监听器中注入spring bean

我试图让JPA Entity Listener通过将其标记为@Configurable来了解spring上下文.但是注入的spring bean是null.能够使用相同的技术使JPA实体了解Spring上下文.我使用Spring(core和data-jpa)作为基础设施.有关如何使用JPA Entity Listeners或spring data-jpa实现此目的的任何想法?

@Configurable
@Scope("singleton")
public class AggregateRootListener {
    private static Logger log = LoggerFactory.getLogger(AggregateRootListener.class);

    @Autowired
    private EventHandlerHelper eventHandlerHelper;

    @PostPersist
    @PostUpdate
    public void publishEvents(BaseAggregateRoot aggregateRoot){
        log.info(aggregateRoot.getEvents().toString());
        aggregateRoot.getEvents().stream()
            .forEach(event -> {
                eventHandlerHelper.notify(event, aggregateRoot);
                log.info("Publishing " + event + " " + aggregateRoot.toString());
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

和BaseAggregateRoot代码

@Configurable
@Scope("prototype")
@MappedSuperclass
@EntityListeners(AggregateRootListener.class)
public abstract class  BaseAggregateRoot extends BaseDomain{
    public static enum AggregateStatus {
        ACTIVE, ARCHIVE
    }

    @EmbeddedId
    @AttributeOverrides({
          @AttributeOverride(name = "aggregateId", column = @Column(name = "ID", nullable = false))}) …
Run Code Online (Sandbox Code Playgroud)

spring jpa aspectj spring-data-jpa

3
推荐指数
1
解决办法
5471
查看次数