运行时 NameQuery 找不到

我的project本来已经有2个表的实体类,各种配置都正常。今天新加2个表,并建立实体类和stateless ejb,所有操作跟以前都一样。编译没问题,部署也没问题,运行就出问题了:

[img]http://dl.iteye.com/upload/attachment/234955/d0c85b44-0699-3676-9c8a-ebb756921d45.jpg[/img]
出错信息说明这个查询名字找不到,但是,这个查询是生成实体类时,自动建立的:

[img]http://dl.iteye.com/upload/attachment/234957/143c1348-a09d-34b3-b677-2ee97f59e1ad.jpg[/img]
搞了大半天,没有任何头绪。把电脑启动了几次了,甚至连实体类删除了重建,也是同样的问题。下班回家,重建实体类,一运行还是出错。
后来想了想,为什么以前建的实体类就可以正常运行,而今天建的就不行???而且编译和部署都没有问题,说明问题不在具体的语句上。
突然想到 persistence.xml ,把它打开,添加这2个新的实体类,保存,重新生成和部署,运行就不出错了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用适配器模式来实现这个需求。首先,定义一个接口,包含查询方法 `queryField()`: ```java public interface FieldQuery { String queryField(); } ``` 然后,实现三个接口,分别查询不同的字段: ```java public class NameQuery implements FieldQuery { public String queryField() { // 查询名字字段的sql语句 return "SELECT name FROM table"; } } public class AgeQuery implements FieldQuery { public String queryField() { // 查询年龄字段的sql语句 return "SELECT age FROM table"; } } public class GenderQuery implements FieldQuery { public String queryField() { // 查询性别字段的sql语句 return "SELECT gender FROM table"; } } ``` 最后,使用适配器模式,将三个接口统一成一个接口,并且使用同一个xml的sql语句: ```java // 适配器模式 public class FieldQueryAdapter implements FieldQuery { private String sql; public FieldQueryAdapter(String sql) { this.sql = sql; } public String queryField() { // 查询指定字段的sql语句 return sql; } } ``` 使用时,可以这样调用: ```java FieldQuery nameQuery = new FieldQueryAdapter("SELECT name FROM table"); FieldQuery ageQuery = new FieldQueryAdapter("SELECT age FROM table"); FieldQuery genderQuery = new FieldQueryAdapter("SELECT gender FROM table"); System.out.println(nameQuery.queryField()); System.out.println(ageQuery.queryField()); System.out.println(genderQuery.queryField()); ``` 这样就可以实现三个接口,每个接口只查询一个字段,并且三个接口使用同一个xml的sql语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值