【发布时间】:2014-02-10 18:58:42
【问题描述】:
当我尝试打开时
http://localhost:8080/tailor/orders
它应该返回数据库中的所有订单。但是它正在生成错误
{"message":"There was an error processing your request. It has been logged (ID fe49a13e76c59894)."}
我无法追踪问题的原因。
我正在使用 dropwizard 来提供 restful web 服务,并从 dropwizard 中休眠来获取 sqlight 数据库。
类:
资源类:
@Path("/tailor")
@Produces(MediaType.APPLICATION_JSON)
public class TailorResource {
OrderDAO orderdao;
public TailorResource(OrderDAO odao) {
this.orderdao = odao;
}
@GET
@Path("/orders")
@Produces(MediaType.APPLICATION_JSON)
public List<OrderModel> getAllOrders() {
return orderdao.findAll();
}
@GET
@Path("/orders/{id}")
@Produces(MediaType.APPLICATION_JSON)
public OrderModel getOrderById(@PathParam("id") int id) {
return orderdao.findById(id);
}
}
OrderDAO 类:
public class OrderDAO extends AbstractDAO<OrderModel>{
public OrderDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public OrderModel findById(int id) {
return get(id);
}
public OrderModel create(OrderModel o) {
return persist(o);
}
public List<OrderModel> findAll() {
return list(namedQuery("com.yammer.dropwizard.tailor.model.OrderModel.findAll"));
}}
订单类别:
@NamedQueries({
@NamedQuery(
name = "com.yammer.dropwizard.tailor.model.OrderModel.findAll",
query = "SELECT o FROM OrderModel o"
),
@NamedQuery(
name = "com.yammer.dropwizard.tailor.model.OrderModel.findById",
query = "SELECT o FROM OrderModel o WHERE o.ID = :ID"
)
})
@Entity
@Table(name = "Order")
public class OrderModel {
@Id
@GeneratedValue
@Column(name = "o_id")
int ID;
@Column(name = "o_shirt_quantity")
int shirtQuantity;
@Column(name = "o_longshirt_quantity")
int longshirtQuantity;
@Column(name = "o_trouser_quantity")
int trouserQuantity;
@Column(name = "o_coat_quantity")
int coatQuantity;
@Column(name = "o_deliverydate")
Date deliveryDate;
@Column(name = "o_orderdate")
Date orderDate;
@Column(name = "o_shirt_price")
Double shirtPrice;
@Column(name = "o_longshirt_price")
Double longshirtPrice;
@Column(name = "o_trouser_price")
Double trouserPrice;
@Column(name = "o_coat_price")
Double coatPrice;
@Column(name = "o_totalamount")
Double totalAmount;
@Column(name = "o_discount")
Double discount;
@Column(name = "o_advancedpayment")
Double advancedPayment;
@Column(name = "o_remainingpayment")
Double remainingPayment;
@Column(name = "o_orderstatus")
int orderStatus;
}
数据库配置类:
public class databaseConfiguration extends Configuration {
@Valid
@NotNull
@JsonProperty
DataSourceFactory dbconfigurations = new DataSourceFactory();
public DataSourceFactory getDataSourceFactory() {
//return dbconfigurations;
Map<String,String> s=new HashMap<String,String>();
s.put("hibernate.dialect","Hibernate.SQLightDialect.SQLiteDialect");
dbconfigurations.setProperties(s);
return dbconfigurations;
}
}
主要服务类:
public class TailorApplication extends Application<databaseConfiguration> {
public static void main(String[] args) throws Exception {
new TailorApplication().run(args);
}
private final HibernateBundle<databaseConfiguration> hibernate = new HibernateBundle<databaseConfiguration>(CustomerModel.class) {
{
@Override
public DataSourceFactory getDataSourceFactory(databaseConfiguration configuration) {
return configuration.getDataSourceFactory();
}
};
@Override
public void initialize(Bootstrap<databaseConfiguration> bootstrap) {
// TODO Auto-generated method stub
bootstrap.addBundle(hibernate);
}
@Override
public void run(databaseConfiguration configuration, Environment environment)
throws Exception {
final OrderDAO odao = new OrderDAO(hibernate.getSessionFactory());
environment.jersey().register(new TailorResource(odao));
}
}
YML 文件:
dbconfigurations:
# the name of your JDBC driver
driverClass: org.sqlite.JDBC
# the username
user:
# the password
password:
url: jdbc:sqlite:TailorDB.db
请帮忙?
【问题讨论】:
-
您是否尝试在日志中查找数据库?
-
怎么做??日志文件在哪里。这一切都是新的
-
我们甚至不知道您使用的是哪个数据库。但是阅读那些文档,我相信你会找到日志文件。
-
我正在使用 sqlight 作为数据库
-
在帖子中添加了 YML 文件。
标签: java hibernate dropwizard