java相关的一切杂言碎语

2009年5月10日星期日

hibernate annotion多对多关系示例

实体之间是多对多的关系,如图:


错误的实体代码如下

JAVA 代码:
  1. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
  2. @JoinTable(name = "product_packagetype:packageTypes:products")
  3. private java.util.Listimplambition.forxxx.model.PackageType> packageTypes;
  4. /**
  5. * @generated
  6. */
  7. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
  8. @JoinTable(name = "product_productcolor:productColors:products")
  9. private java.util.Listimplambition.forxxx.model.ProductColor> productColors;
  10. /**
  11. * @generated
  12. */
  13. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
  14. @JoinTable(name = "product_attach:attachs:products")
  15. 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 代码:
  1. /**
  2. * @generated
  3. */
  4. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  5. //@JoinTable(name = "product_packagetype:packageTypes:products")
  6. @JoinTable(name = "product_packagetype", joinColumns = { @JoinColumn(name = "packageTypes") }, inverseJoinColumns = { @JoinColumn(name = "products") })
  7. private java.util.Listimplambition.forxxx.model.PackageType> packageTypes;
  8. /**
  9. * @generated
  10. */
  11. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  12. //@JoinTable(name = "product_productcolor:productColors:products")
  13. @JoinTable(name = "product_productcolor", joinColumns = { @JoinColumn(name = "productColors") }, inverseJoinColumns = { @JoinColumn(name = "products") })
  14. private java.util.Listimplambition.forxxx.model.ProductColor> productColors;
  15. /**
  16. * @generated
  17. */
  18. @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  19. //@JoinTable(name = "product_attach:attachs:products")
  20. @JoinTable(name = "product_attach", joinColumns = { @JoinColumn(name = "attachs") }, inverseJoinColumns = { @JoinColumn(name = "products") })
  21. private java.util.Listimplambition.forxxx.model.Attach> attachs;
其他关联实体只列出一个示例,代码如下(注释掉的为studio生成的代码)

JAVA 代码:
  1. /**
  2. * @generated
  3. */
  4. //@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
  5. @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY, mappedBy="attachs")
  6. private java.util.Listimplambition.forxxx.model.Product> products;

apusic operamasks使用了 w:foreach 迁移到tomcat的问题

aom使用了 w:foreach 迁移到tomcat的问题

如果部署到tomcat的aom应用中使用了 w:foreach,只包含
elite.jar
jsf-api.jar
operamasks-impl.jar
operamasks-options.jar
operamasks-third-party.jar
在一些特殊情况下(w:foreach 绑定的不是一个list对象)是不能运行的,需要加上jstl.jar

uidata.java 方法getDataModel会调用到jstl.jar
复制内容到剪贴板
JAVA 代码:
  1. protected DataModel getDataModel() {
  2. // Return any previously cached DataModel instance
  3. if (this.model != null) {
  4. return (model);
  5. }
  6. // Synthesize a DataModel around our current value if possible
  7. Object current = getValue();
  8. if (current == null) {
  9. setDataModel(new ListDataModel(Collections.EMPTY_LIST));
  10. } else if (current instanceof DataModel) {
  11. setDataModel((DataModel) current);
  12. } else if (current instanceof List) {
  13. setDataModel(new ListDataModel((List) current));
  14. } else if (Object[].class.isAssignableFrom(current.getClass())) {
  15. setDataModel(new ArrayDataModel((Object[]) current));
  16. } else if (current instanceof ResultSet) {
  17. setDataModel(new ResultSetDataModel((ResultSet) current));
  18. } else if (current instanceof Result) {
  19. setDataModel(new ResultDataModel((Result) current));
  20. } else {
  21. setDataModel(new ScalarDataModel(current));
  22. }
  23. return (model);
  24. }

2009年5月1日星期五

关于CSS Sprites

前两天看apple的网站,网站导航看起来挺酷的,查看源码发现是一个大图片,如下图
心里就想apple的网页设计师怎么这么烂,现在都是css+小图片搞掂导航的,心里一直纳闷,今天在javaeye看到CSS Sprites介绍,其中就讲到了apple,原来是使用的CSS Sprites,看来倒是自己孤陋寡闻了,呵呵!转贴这篇文章给那些和我一样孤陋寡闻的朋友们
见文章:http://www.javaeye.com/news/7261-decrypt-css-sprites-skills-tools-and-tutorials

pic