Когда у сущности есть хранилище данных Spring, LoadTimeWeaving для этой сущности не работает

Например, User юридическое лицо:

@Configurable
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
@DynamicInsert
@DynamicUpdate
public class User extends AbstractAggregateRoot<User> implements Serializable {

    private static final long serialVersionUID = 1L;

    @Autowired
    @Transient
    private UserRepository userRepository;

    @Autowired
    @Transient
    private EmailRepository emailRepository;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nickname;

    @Version
    @Column(columnDefinition = "timestamp")
    @Source(value = SourceType.DB)
    private Timestamp ts;

    public void doSavedComplete() {
        UserSavedEvent event = new UserSavedEvent();
        event.setUser(this);
        event.setTs(new Date());
        andEvent(event);
        userRepository.save(this);
    }

    @Data
    public static class UserSavedEvent {
        private User user;
        private Date ts;
    }
}

и это хранилище:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

Когда я создаю новый User объект:

User ob = new User();

пользователь userRepository а также emailRepository являются null, так как User а также Email иметь соответствующие Repository классы, UserRepository а также EmailRepository;

Когда я использую другой класс UserAggregateRoot у которого нет репозитория Spring Data JPA, время загрузки отлично работает:

@Configurable
@Entity
public class UserAggregateRoot extends AbstractAggregateRoot<User> implements Serializable {
    @Autowired
    @Transient
    private UserRepository userRepository;

    @Autowired
    @Transient
    private EmailRepository emailRepository;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nickname;

    @Version
    @Column(columnDefinition = "timestamp")
    @Source(value = SourceType.DB)
    private Timestamp ts;
}

UserAggregateRoot не имеет Repositoryпоэтому, когда я создаю новый UserAggregateRoot объект, поля UserAggregateRoot, UserRepository а также EmailRepository не null;

Итак, я хотел бы знать, почему? Это ошибка?

0 ответов

Другие вопросы по тегам