2

SQLQuery を使用して、休止状態を使用してデータベースからデータを選択しています。* を選択しようとすると動作しますが、いくつかの列のみが必要な場合は次のように返されます: 列名が無効で、この問題に関する他のトピックを検索しましたが、役に立ちませんでした。ここに私のコードがあります:

変数が宣言されている User.java は次のとおりです。

public class User は Serializable を実装します {

private static final long serialVersionUID = -1798070786993154676L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_Sequence")
@Column(name = "ID", unique = true, nullable = false)
@SequenceGenerator(name = "id_Sequence", sequenceName = "ID_SEQ")

private Integer id;

@Column(name = "FIRST_NAME", unique = false, nullable = false, length = 100)
private String firstname;
@Column(name = "LAST_NAME", unique = false, nullable = false, length = 100)
private String lastname;
@Column(name = "DATE_OB", unique = false, nullable = false, length = 100)
private String birthdate;
@Column(name = "DATE_OW", unique = false, nullable = false, length = 100)
private String startdate;
@Column(name = "DEPARTMENT", unique = false, nullable = false, length = 100)
private String department;
@Column(name = "POSITION", unique = false, nullable = false, length = 100)
private String position;

//ゲッターとセッター付き

選択しようとしている場所の一部:

public static List<User> getAllUser()
{
    List<User> result = null;
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();

        String sql = "select first_name from employee";
        SQLQuery query = session.createSQLQuery   (sql).addEntity(User.class);
        result = query.list();



    } catch (HibernateException e) {
        if (tx != null)
            tx.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
    return result;

}

私が推測するように、別の hibernate-mapping ファイルを作成する必要はありません。これは、既に User クラスで行われているためです。原因となるものを見つけるのを手伝ってください。

4

2 に答える 2

1

これは私のために働いた:

SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

List first_names = query.list();

for (Object object : first_names) 
         {
          System.out.println("User Details are==========  " + object);  
        // or
          Map map = (Map) object;
          System.out.println("first_names : " + map.get("first_name"));
         }
于 2017-12-26T09:49:22.320 に答える