我试图实现国际化类来翻译数据库中的内容。
我有这些表格:
我有这些课程:
产品型号:
public class ProductModel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idproduct_model")
private Integer idproductModel;
@Size(max = 80, message = "El campo nombre esta vacio")
@Column(name = "name")
private String name;
@Size(max = 45, message = "El campo referencia esta vacio")
@Column(name = "productSuppReference")
private String productSuppReference;
...
语言
public class LanguageCountry implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id_language")
private Integer idLanguage;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "description")
private String description;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "languageCountry1")
private List<ProductModelI18n> productModelI18nList;
...
ProductModelI18n:
public class ProductModelI18n implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected ProductModelI18nPK productModelI18nPK;
@Size(max = 80)
@Column(name = "name")
private String name;
@Lob
@Size(max = 2147483647)
@Column(name = "description")
private String description;
@Size(max = 800)
@Column(name = "description2")
private String description2;
@JoinColumn(name = "language_country", referencedColumnName = "id_language", insertable = false, updatable = false)
@ManyToOne(optional = false)
private LanguageCountry languageCountry1;
ProductModelI18nPK:
@Embeddable
public class ProductModelI18nPK implements Serializable {
@Basic(optional = false)
@NotNull
@Column(name = "product_model")
private int productModel;
@Basic(optional = false)
@NotNull
@Column(name = "language_country")
private int languageCountry;
我遇到问题,因为我需要在ProductModelI18n表中使用双PK来获得productmodel和languageCountry之间的多种关系,现在我不知道如何在productModel中创建连接表。
我需要ProductModel类中的ArrayList / Map。
提前谢谢!
何
答案 0 :(得分:0)
修改强>
很抱歉我的错误我错过了您在加入表中有额外列的事实,因此只需要将ManyToMany
和ProductModel
之间的LanguageCountry
关联分解为两个{{1}关联。
您的代码应如下所示:
OneToMany
课程中的:
ProductModel
@OneToMany
private List<ProductModelI18n> ProductLanguages;
课程:
LanguageCountry
在您的ProductModelI18n课程中:
保留所有其他字段,包括IdPK,并添加以下声明。
@OneToMany
private List<ProductModelI18n> ProductLanguages;
注意:强>
确保包含所有getter和setter。
无需创建课程@ManyToOne
@PrimaryKeyJoinColumn(name="productModel", referencedColumnName="idproductModel")
private ProductModel productModels ;
@ManyToOne
@PrimaryKeyJoinColumn(name="languageCountry", referencedColumnName="idLanguage")
private LanguageCountry LanguageCountries;
即可在ProductModelI18n
和ManyToMany
之间建立productmodel
关系。
在这两个使用languageCountry
注释映射的类中,您只需要两个Collections
,您可以在这两个方面之一中定义@ManyToMany
这里所需的代码:< / p>
@JoinTable
课程:
ProductModel
在您的@ManyToMany
@JoinTable(
name="ProductModelI18n",
joinColumns={@JoinColumn(name="productModel", referencedColumnName="idproductModel")},
inverseJoinColumns={@JoinColumn(name="languageCountry", referencedColumnName="idLanguage")})
private List<LanguageCountry> languageCountries;
课程中
LanguageCountry
如图所示,您将在两个表之间获得一个Join表。
有关详细信息,请查看: