抓狂(javakuang)

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

2009年4月30日星期四

[转帖]FriendFeed的高明之处

转自:http://webleon.org/2008/02/friendfeed.html


今天是FriendFeed爆发日。经历了几个月的测试以后,这个由数名Google的前员工组成的团队开发的聚合服务获得了500万美元的融资,并开始开放注册。

FriendFeed 是一个在朋友之间交流各自最新在线活动的一个平台。它可以把用户所使用的网络服务的更新内容同步并聚合在一起。你只要在FriendFeed上添加你感兴 趣的好友,就可以随时看到他们所更新的活动。我们也可以对这些朋友的每一项更新进行评论和收藏。FriendFeed已经内置了20多种常见的服务方便用 户进行添加内容。

乍一看起来FriendFeed和其它LifeStreaming的服务貌似没有多少区别,但是通过一些细节就可以看出 FriendFeed可以作的事情更多。你可以对你朋友的所有活动进行评论和收藏,而你所作的这些评论和收藏的数据都将被FriendFeed记录和分 析。

通过这些记录和分析,FriendFeed提供了一些非常有趣的功能。它的统计功能可以帮你找出哪些人对你的内容感兴趣,而你又对哪 些人的内容感兴趣;也可以看出你以及你的朋友使用哪些服务更为频繁;FriendFeed的推荐功能可以给你推荐你可能感兴趣的人;你甚至可以用你感兴趣 的内容来虚拟出一个你感兴趣的人物。

FriendFeed的高明之处在于:它的初始用户数据来自于用户已经熟悉、且已被广泛使用的发布平台,不用担心内容的匮乏;而用户间的互动又需要在网站内完成,为数据的分析提供了便利;而数据的分析可以帮助用户更好的拓展和改良自己的朋友圈子,获得更有价值的内容。

所以说FriendFeed是一个可以跟踪你朋友所发布在线内容的平台。而这些朋友,可能来自现实生活,可能是和你有相同的爱好,可能是你感兴趣的人,甚至是一个虚拟的人物!

2009年4月2日星期四

ORACLE进阶(二)

pl/sql提供了可编辑数据的功能,需要在select语句后加个 for update,执行后点击锁图标就可以开始编辑数据了。
数据库字符串操作,oracle和mysql独有一个相同的字符串函数INSTR,如图。这个函数还是很有作用的。

ORACLE进阶(一)

很久没有使用oracle了,今晚要验证一个sql,就启动oracle竟然服务启动不了,寒!
之前因为每次开机就自动启动oracle服务很耗机器,就改为手动启动oracle,没想到有现在的情况。
遇到问题只好自己来解决了,看看oracle启动日志,日志在哪里呢?很久不用忘了,寒!
还好最后找到了 oracle安装路径\product\10.2.0\db_1\network\log\listener.log
看到以下错误:
以 pid=5108 开始
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.102)(PORT=1521)))
TNS-12545: 因目标主机或对象不存在, 连接失败
TNS-12560: TNS: 协议适配器错误
TNS-00515: 因目标主机或对象不存在, 连接失败
32-bit Windows Error: 49: Unknown error
不再监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

问题比较明晰了,服务器ip的问题,通过ipconfig命令查看自己的ip已经不是1.102了,更寒!看来以后不能使用动态ip来指定机器了。
解决方法:
一。改变动态ip为现在的ip,后续可能还会遇到这样的问题
改变 oracle安装路径\product\10.2.0\db_1\network\tnsname.ora
oracle安装路径\product\10.2.0\db_1\network\listener.ora
二。改为机器名,不该机器名一般就不会出现该问题

生活网站:爱帮网

http://www.aibang.com
爱帮网


垂直类搜索网站,据说ceo是刘建国,之前是百度的CTO,搜索的能力确实不错,不管是搜索餐馆还是公交线路都是一级棒,确实名副其实,是生活的好帮手大家可以体验下,相信你一定会喜欢上它

pic