0
最初は私の質問が素人だと思われますが、hibernate/jpaとmysqlの知識はいくらか制限されています。上記Hibernateは@ManyToOneを使用したクエリでnull hqlを返します
public User findUserByEmail(String email) {
Session session = HibernateUtil.getSessionFactory().openSession();
User user = null;
String hql = "SELECT "
+ "u.idUser as idUser, "
+ "u.nome as nome, "
+ "u.level as level, "
+ "(SELECT count(*) FROM UserLikes likes WHERE likes.user = u.idUser) as totalLikes "
+ "FROM User u WHERE u.email = :email";
try {
Query query = session.createQuery(hql);
query.setString("email", email);
query.setResultTransformer(Transformers.aliasToBean(User.class));
user = (Usuario) query.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
} finally {
session.close();
}
return user;
}
:、私は、次のMySQLのクエリを実行しようとしている
ユーザエンティティそこから
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_user")
private Long idUser;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String email;
@ManyToOne(optional = true, fetch = FetchType.EAGER)
@JoinColumn(name = "level", referencedColumnName = "id_level", nullable = true)
private Level level;
@Transient
private Long totalLikes;
}
:
まあ、私は次のエンティティを持っていますコードはUserを通常通り返しますが、データベース内の検索対象のUserがフィールドレベルで値を設定していない場合はnullを返します。つまり、私が間違っていない場合、休止状態は内部結合ユーザー/レベルであり、左結合ではなく、NULLを返すことです。
これを回避する方法はありますか?
フィールドtotalLikes? – sThiago
コントローラーアプリケーションで、別のクエリーと別のDAOで追加します。 :-D – FabioNoth