0

データベース (postgres) があり、Spring 3 と Hibernate 3 で作業しています。問題は、データベースから行を削除または取得しようとするときです。これが私が使用しているクラスです。クエリの後の別のことです。 、間違いはありません。唯一のことは、クラス User が null であることです

@Repository("userDao")
public class UserDao implements IUserDao {

    @Autowired
    private SessionFactory sessionFactory;

    public void SaveUser(User user) {
    sessionFactory.getCurrentSession().save(user);
    }
    @SuppressWarnings("unchecked")
    public List<User> ListUsers() {
        List<User> users = (List<User>) sessionFactory.getCurrentSession().createCriteria(User.class).list();
        return users;
    }
    public User GetUserById(Integer id) {               
        User user = (User) sessionFactory.getCurrentSession().load(User.class, id);
        return user;
    }
}

ところで、メソッド、SaveUser および ListUser は非常にうまく機能します。

これはモデルクラスです

@Entity
@Table(name = "mrbean")
public class User {

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private Integer id;

@NotNull (message = "not null")
@NotEmpty (message = "empty")
@Column (name = "user_name", length = 20, nullable = false, unique = true)
private String userName;

@NotNull 
@NotEmpty (message = "empty password")
@Size (min = 7, max = 20, message = "La contraseña debe tener entre 7 y 20 caracteres")
@Column (name = "password", length = 20, nullable = false)
private String password;

//ゲッターとセッターを使用

これは、User user = (User)sessionFactory.getCurrentSession().load(User.class, id) が実行されたときにコンソールに表示される休止状態です。

Hibernate: mrbean user0_ から、id0_0_ として user0_.id、password0_0_ として user0_.password、user3_0_0_ として user0_.user_name を選択します。

4

1 に答える 1

1

load() は User のプロキシを作成するため (Hibernate ref doc を参照)、「load」の代わりに「get」を使用します。 );

于 2012-11-27T20:37:12.100 に答える