實體之間是多對多的關係,
錯誤的實體代碼如下
JAVA 代碼:
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
- @JoinTable(name = "product_packagetype:packageTypes:products")
- private java.util.Listimplambition.forxxx.model.PackageType> packageTypes;
- /**
- * @generated
- */
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
- @JoinTable(name = "product_productcolor:productColors:products")
- private java.util.Listimplambition.forxxx.model.ProductColor> productColors;
- /**
- * @generated
- */
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
- @JoinTable(name = "product_attach:attachs:products")
- private java.util.Listimplambition.forxxx.model.Attach> attachs;
-
-
這樣的代碼本身不能正常運行,報錯 cannot simultaneously fetch multiple bags。
改成FetchType.LAZY後,報錯 WARN [main] 2009-05-10 16:46:18,655 - SQL Error: 1064, SQLState: 42000
ERROR
[main] 2009-05-10 16:46:18,655 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near ':packageTypes:products packagetyp0_ left
outer join PackageType packagetyp1_ on ' at line 1
最後只能修改為:
Product實體
JAVA 代碼:
- /**
- * @generated
- */
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
- //@JoinTable(name = "product_packagetype:packageTypes:products")
- @JoinTable(name = "product_packagetype", joinColumns = { @JoinColumn(name = "packageTypes") }, inverseJoinColumns = { @JoinColumn(name = "products") })
- private java.util.Listimplambition.forxxx.model.PackageType> packageTypes;
- /**
- * @generated
- */
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
- //@JoinTable(name = "product_productcolor:productColors:products")
- @JoinTable(name = "product_productcolor", joinColumns = { @JoinColumn(name = "productColors") }, inverseJoinColumns = { @JoinColumn(name = "products") })
- private java.util.Listimplambition.forxxx.model.ProductColor> productColors;
- /**
- * @generated
- */
- @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
- //@JoinTable(name = "product_attach:attachs:products")
- @JoinTable(name = "product_attach", joinColumns = { @JoinColumn(name = "attachs") }, inverseJoinColumns = { @JoinColumn(name = "products") })
- private java.util.Listimplambition.forxxx.model.Attach> attachs;
其他關聯實體只列出一個樣本,代碼如下(注釋掉的為studio產生的程式碼)
JAVA 代碼:
- /**
- * @generated
- */
- //@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
- @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY, mappedBy="attachs")
- private java.util.Listimplambition.forxxx.model.Product> products;