我用的是SqlServer2008,在查询数据库中的char型数据时,EJB返回的是一个字节的,就是Java中的char了。可是和SqlServer2008的不一样啊。怎么取呢?另外,我在jboss的default中的conf文件夹中看到有这样一个文件standardjbosscmp-jdbc.xml。请问这个文件怎么用?
[b]问题补充:[/b]
实际上,因为使用了存储过程,我都没有写实体bean
[b]问题补充:[/b]
[code="java"]
EntityManager em;
Query query;
public List<?> getAll(String sql){
query=em.createNativeQuery(sql);
return query.getResultList();
}
[/code]
sql是调用一个存储过程的语句。存储过程就是一个简单的查询语句,返回的字段中有一个是char型的字段。
[b][color=blue]解决之道:
在那个Entity Bean的定义中,将那个Field定义为String类型。(实际上,很多情况下,数据库中的char字段类型都是对应java中的String类型)[/color][/b]
[b][color=blue]standardjbosscmp-jdbc.xml文件应该是配置ejb中的实体bean与数据库中表的映射关系的。
具体怎么用,没使用过JBOSS。(EJB3推出JPA后,手工编写映射规则已经是多余的了。)[/color][/b]
[b]准确说是,用XML编写映射规则,相比JPA提供的Annotations来说,显得繁琐了。[/b]
[color=blue]那你是怎么获得数据中的记录的。看看那段代码,如果使用ResultSet.getChar来获得数据的话,那改为ResultSet.getString[/color]
[color=blue]你是怎么处理getAll(String sql)的返回结果的?
你可以定义一个实体bean, 比如Employee,然后在查询时:
query=em.createNativeQuery(sql,Employee.class);
在Employee中定义数据库字段与Employee属性的对应关系呀?
[/color]
[b]<< Pro EJB 3 Java Persistence API >> ,中文版本《 EJB3.0 专家编程》也许会对你有所启发吧!
最近我也在学,可以的话,相互交流! [/b]