Когда у сущности есть хранилище данных 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
;
Итак, я хотел бы знать, почему? Это ошибка?