如何在一个表中存储由其他实体与Hibernate组成的实体?

时间:2016-12-06 16:39:14

标签: mysql hibernate spring-mvc hibernate-mapping

我正在使用SpringMVC + Hibernate,我正面临一个我难以解决的问题。 情况如下:

我有这个实体:

@Entity
@Table( name = "T_inscription" )
public class T_inscription implements Serializable {

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

  @Valid
  private Identite       identite;

  @Valid
  private ParamConnexion paramConnexion;
//........
}

这堂课:

public class Identite implements Serializable {

  @Size( min = 2 )
  @NotBlank
  @Pattern( regexp = "[\\p{L}\\p{Alpha} -]*" )
  @Column( name = "nom" )
  private String  nom;

  @Size( min = 2 )
  @NotBlank
  @Pattern( regexp = "[\\p{L}\\p{Alpha} -]*" )
  @Column( name = "prenom" )
  private String  prenom;
//....
}

这一个:

public class ParamConnexion implements Serializable {

  @Pattern( regexp = "[\\p{L}\\p{Alnum}-_]*" )
  @Size( min = 2 )
  @Transient
  private String                 identifiant;

  @Pattern( regexp = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\."
        + "[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*"
        + "@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" )
  @Column( name = "email" )
  private String                 email;
//.....
}

我的表格“T_inscription”包含以下字段:“id_inscription”,“nom”,“prenom”,“identifyiant”,“email”等...

我的问题是,如何在“T_inscription”表中保存“Identite”和“ParamConnexion”类的属性?

我不想为每个类创建一个表。有没有办法做到这一点 ?

我尝试了,我得到了这个例外:Unknown column 'identite' in 'field list'

这是正常的,因为我的表中没有这个字段,我不想创建它,我只想获得“Identite”的属性。

非常感谢。

1 个答案:

答案 0 :(得分:0)

必须使用@Embeddable注释两个非实体类。字段identiteparamConnexion必须使用Embedded注释。有关详细信息,请参阅这两个注释的javadoc。