Исключение сопоставления в гибернации с сборами

StackOverflow https://stackoverflow.com/questions/4166377

  •  09-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить это отображение на работу, но я получаю это странное сообщение исключения

Could not determine type for: foo.ProcessUser, at table: ProcessUser_onetimeCodes, for columns: [org.hibernate.mapping.Column(processUser)]

@Entity
public class ProcessUser {

  @Setter
  private List<OnetimeCodes> onetimeCodes;

  @CollectionOfElements
public List<OnetimeCodes> getOnetimeCodes() {
    return onetimeCodes;
  }
}


@Embeddable
@Data
public class OnetimeCodes {

    @Parent
    private ProcessUser processUser;

    @Column(nullable=false)
    @NotEmpty
    private String password;


    public OnetimeCodes(ProcessUser processUser, String password) {
        this.processUser = processUser;
        this.password = password;
    }
}

Может кто-нибудь наступит, что здесь не так? у меня есть hibernate.hbm2ddl.auto на create

Это было полезно?

Решение

Я нашел ошибку.

Вы не можете иметь отображение на атрибуте в одном из классов, а на Getter с другой. Они должны соответствовать.

Так что я изменил

@Embeddable
@Data
public class OnetimeCodes {

    @Parent
    private ProcessUser processUser;

    @Column(nullable=false)
    @NotEmpty
    private String password;


    public OnetimeCodes(ProcessUser processUser, String password) {
        this.processUser = processUser;
        this.password = password;
    }
}

к

@Embeddable
public class OnetimeCodes {

    private ProcessUser processUser;

    private String password;

    public OnetimeCodes(ProcessUser processUser, String password) {
        this.processUser = processUser;
        this.password = password;
    }

    @Parent
    public ProcessUser getProcessUser() {
        return processUser;
    }

    public void setProcessUser(ProcessUser processUser) {
        this.processUser = processUser;
    }

    @Column(nullable=false)
    @NotEmpty
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

и альт. Очень глупо, если вы спросите меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top