0

DBからのデータを表示するために使用したいこのJavaオブジェクトがあります。

public TData td;

    public class TData {

        private long id;
        private String key;
        private String language;
        private String translation;

        public TData() {
        };

        public TData(long id, String key, String language, String translation) {
            // super();
            this.id = id;
            this.key = key;
            this.language = language;
            this.translation = translation;
        }

        public long getId() {
            return id;
        }

        public void setId(long id) {
            this.id = id;
        }

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public String getLanguage() {
            return language;
        }

        public void setLanguage(String language) {
            this.language = language;
        }

        public String getTranslation() {
            return translation;
        }

        public void setTranslation(String translation) {
            this.translation = translation;
        }

    }

    public TData getDataObj() {
        return td;
    }

これは、データを取得するために使用したい DB テーブルです。

CREATE TABLE translations (
id  SERIAL NOT NULL, 
KEY VARCHAR(255), 
LANGUAGE VARCHAR(255), 
TRANSLATION VARCHAR(255)
)

クエリの作成に使用されるカスタム JPA オブジェクトがあります。

@PostConstruct
    public void loadData() {

        td = new TData();

        String query = "SELECT c FROM Translations c WHERE c.Id = '70'";
        //String query = "SELECT p from translations p where id=70";
        td = (TData) dao.jpqlQuerySingle(query);

    }

JSF ページを開くと、Java オブジェクトが空です。Java メソッドjpqlQuerySingleを使用して結果をオブジェクトとして返しますが、何らかの理由で空のオブジェクトを取得します。問題を解決するのを手伝ってくれませんか。

4

2 に答える 2

2

文字列をロングと比較しています。これにより、結果はゼロになります。代わりにこれを試してください:

SELECT c FROM Translations c WHERE c.Id = 70
于 2013-03-20T09:27:29.937 に答える
0

Tamplar の回答 (long と String の比較) に加えて、おそらくオブジェクト ラッパーを使用する必要があります@Id。つまり、プリミティブ データ型Longの代わりにオブジェクトを使用する必要があります。long

この理由: 要するに、longすることはできませんnull。永続オブジェクトが保存/デタッチされているか、新規であるかを確認する最も一般的で簡単な方法は、が であるかどうかを確認すること@Idですnull

于 2013-03-20T10:16:21.470 に答える