Spring data jdbc 似乎不适用于最终属性

我正在尝试弹簧数据 JDBC (1.1.0.M3)。我有一个包含电子邮件属性(电子邮件类)的 Formateur(教师)类。电子邮件是一个不可变的类。当我从数据库中检索所有教师时,我有以下内容


异常:java.lang.UnsupportedOperationException:无法设置不可变属性 fr.yestech.data.jdbc.domain.Email.email


看来spring data JDBC对final属性不好用!


public class Formateur {


    private @Id Long id;

    private String nom;

    @Embedded

    private Email email;


...

}

电子邮件类(不可变类,所以没有设置器!)


public final class Email {


    private final String email;

    private static final Pattern EMAIL_PATTERN = Pattern.compile("^[_A-Za-z]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");


    private Email(String email) {

      Objects.requireNonNull(email, "Adresse email doit être non null!");

        if (!EMAIL_PATTERN.matcher(email).matches())

          throw new IllegalArgumentException("L'adresse email est 

                     invalide !");

        this.email = email;

    }


    public static Email of(String email) {

        return new Email(email);

    }

...

}

应用


@SpringBootApplication

public class SpringJdbcApplication {


    public static void main(String[] args) {

        SpringApplication.run(SpringJdbcApplication.class, args);

    }


    @Bean

    ApplicationRunner applicationRunner(FormateurRepository formateurRepository) {

        return args -> {

            Formateur teacher = Formateur.of("YesTech", Email.of("yestech@email.com"), Adresse.of("Goux"));


            formateurRepository.save(teacher); 

            formateurRepository.findAll().forEach(System.out::println);

        };

    }


}


森栏
浏览 51回答 1
1回答

幕布斯7119047

这确实是一个错误。您可以通过添加“凋零”来解决它private Email withEmail(String email) {    return new withEmail(email);}它甚至可能是私人的。我为此创建了一个问题,因此很快就会得到修复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java