Я делаю приложение, у которого есть это отношение: персональный контакт имеет электронную почту.Атрибут [] отсутствует в управляемом типе
Так я пытаюсь найти сообщения электронной почты из личных контактов, и я делаю этот запрос, используя критерии, но всегда возвращают IllegalArgumentException
:
@Override
public Email findByEmail(PersonalContact personalContact) {
CriteriaBuilder criteriaBuilder = entityManager().getCriteriaBuilder();
CriteriaQuery<Email> criteriaQuery = criteriaBuilder.createQuery(Email.class);
Root<Email> email = criteriaQuery.from(Email.class);
criteriaQuery.where(criteriaBuilder.equal(
email.get("personalContact"), criteriaBuilder.parameter(PersonalContact.class, "personalContact")));
TypedQuery<Email> typedQuery = entityManager().createQuery(criteriaQuery);
typedQuery.setParameter("personalContact", personalContact);
return typedQuery.getSingleResult();
}
личный контакт, как внешний ключ.
И вот мой Email класс:
@Entity
@Table(name = "Email")
public class Email implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String mainEmail;
private List<String> secondaryMail;
@JoinColumn(name = "personal")
@OneToOne(fetch = FetchType.LAZY)
private PersonalContact pContact;
и вот мой личный контакт класс:
@Entity
@Table(name = "PERSONALCONTACT")
public class PersonalContact extends Contact implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "PERSONAL_ID")
private Long id;
//Other variables
@OneToOne(fetch=FetchType.LAZY, mappedBy="personal")
private Email email;
И каждый раз, когда я выполнить запрос это возвращение:
Исключение в потоке «AWT-EventQueue-0» java.lang.IllegalArgumentException: атрибут [personalContact] равеннет в управляемом типа [EntityTypeImpl @ 1230307250: Email [ javaType: класс csheets.ext.crm.contact.Email дескриптора: RelationalDescriptor (csheets.ext.crm.contact.Email -> [DatabaseTable (электронная почта) ]), отображения: 5]].
Я сделал поиск, а остальные программисты сказали, что проблема связана с именем переменных ... но я думаю, что имена переменных верны.
Так что я делаю неправильно? возможно, связь между этими двумя классами?
Спасибо!
Как вы сохраняете 'private List secondaryMail;'? Вы не можете сохранить список в одной строке. Вам не хватает другой таблицы? –