PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
java
[问题] spring data 问题
楼主:
cyclone350
(老子我最神)
2014-08-15 19:15:55
spring data jpa 问题
大家好,在开发程式时遇到一个问题...
说实在的这问题我认为非常奇妙...
我在实作时有用到 java reflection,今天在 debug发现一个奇妙现象...
其中我有一个 API 是这样使用
EntityUtil.getIdValue(Object entity)
这方法会取得到传入 entity 的 id 值
此方法是检查 class 的 annotation 来取值
今天有一个页面出现错误
经过检查,是查不到entity annotation,
我是透过此方式呼叫的
for(Object o : catalogDao.findAll()) {
try {
map.put(EntityUtil.getIdValue(o), "defaultValue");
} catch(Exception e) {
log.info("no id value:" + o);
}
}
透过 eclipse 检查发现很神奇的现象
http://i.imgur.com/3EOYiGo.png
我的 class 名称被改掉了... 名称后面被加上 _$$_jv...
另外可看到 "catalogName" 及 "pid" 都是 null
但是下面显示(toString)出的讯息却是有值...???
有看到 handler...是lazyInitatial 但是 jpa 的 finaAll() 为啥会是 lazy...
更神奇的是,我检查其他页面所有的 jpa findAll 都是正常的,
就唯一在某个 table 的某一个值出现...
此例为 Catalog
Catalog 是跟 Product 关系为一对多
比较可靠的猜测是当我读取 Product 时有
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cid")
private Catalog catalog;
所以被设定到了...? (不过其他更复杂关系的table都没有出现此问题,catalog是唯一
出问题的)
可是看了 java doc,并没有说明 findAll() 这个 function 会有 lazy 的情况...
请问是我哪边观念错了吗?
或是有哪个点可以切入去 debug ?
楼主:
cyclone350
(老子我最神)
2014-08-15 19:32:00
问题应该等同于
http://ppt.cc/Qr7S
以解决,这是Hibernate __的机制,若要用reflection可以用 Hibernate.getClass 之类的方法取得real Object instance
继续阅读
[J2SE] 多型疑问
icydream
Re: [J2EE] Spring MVC 实现搜寻文章功能 (Lucene..)
ek0424
[问题] springMVC取得所有mapping URL
cyclone350
Re: [工具] 大家写JSP也是用Eclipse写吗?
linlin76
Re: [工具] Eclipse + Dropbox + Git
dharma
[问题] Netbeans 和 Eclipse快捷键
linlin76
[问题] define a constructor in interface?
michael0728n
个人售出考试卷
kimkao
[出售] JAVA SCJP考试券
cej12313
[URL]JDK8 Functionl API
JustinHere
Links
booklink
Contact Us: admin [ a t ] ucptt.com