2013-03-14 40 views
0

我從現有數據庫表(SQL Server 2008 R2)返回數據時遇到問題。我可以成功地進行身份驗證並連接到數據庫,我創建了一個模型,試圖映射到特定的表,然後作爲測試嘗試返回行計數,行計數總是返回0.我想也許我不明白Play/Ebean數據庫連接如何工作。目前我有以下:Play Framework 2.1.0 - 使用Ebean查詢現有數據庫表

模型 - Data.java:

package models; 

import javax.persistence.*; 

import play.db.ebean.*; 

@Entity 
@Table(name="someTable") 
public class Data extends Model { 

    private static final long serialVersionUID = 1L; 

    @Id 
    public int someKey; 

    public String someCol; 

    public static Finder<Integer,Data> find = new Finder<Integer,Data>(Integer.class, Data.class); 

} 

控制器 - Index.java

package controllers; 

import java.util.*; 
import models.Data; 
import play.mvc.*; 

public class Index extends Controller { 

    static int rowCount = Data.find.getMaxRows(); 

    public static Result index() { 
     Result res = ok(rowCount); 
     return res; 
    } 
} 

Application.conf(相關片段):

db.default.driver=net.sourceforge.jtds.jdbc.Driver 
db.default.url="jdbc:jtds:sqlserver://server.domain.local/someDB;instance=SQL" 
db.default.user=someUser 
db.default.password="password" 

evolutionplugin=disabled 

ebean.default="models.*" 

我不知道Evolution是如何工作的,但我在SQL中分別完成數據庫開發工作,即DDL和模式創建/修改。

任何幫助將不勝感激。

感謝

+0

嘗試'findRowCount()'而不是'getMaxRows()'。 – nkr 2013-03-14 21:12:25

+0

@nkr - findRowCount()工作!非常感謝您的幫助,非常感謝,您知道getMaxRows()的預期功能是什麼嗎? – user2162484 2013-03-14 22:15:45

+0

我發佈了一個更詳細的答案。 – nkr 2013-03-15 00:44:27

回答

5

你想要做的是通過findRowCount()返回查詢影響的行數所做的事情。基本上是一個COUNT(*)

getMaxRows()相當於setMaxRows(int),這對您的查詢返回的行數有限制(例如,MySQL中的LIMIT)。

+0

非常好,再次感謝nkr,現在變得非常有意義。 getMaxRows()也等同於T-SQL的SET ROWCOUNT(http://msdn.microsoft.com/zh-cn/library/ms188774.aspx) – user2162484 2013-03-15 06:14:23

相關問題