小编Bor*_*vat的帖子

Hibernate使用带有条件的别名

说实话,我对别名有点困惑,所以我希望有人可以帮助我更好地理解它们.为了解释我所缺少的内容,我将使用示例.

让我们说我有:

Criteria criteria = session.createCriteria(Car.class)
criteria.createAlias("doors", "doors");
Run Code Online (Sandbox Code Playgroud)

这意味着现在我可以使用一些Restrcitions来找到Car沿着这些线的左侧或其他东西的门.

现在我的问题是,如果我在哪里添加多个别名:

criteria.createAlias("doors", "doors").createAlias("doors.keytype", "keytype");
Run Code Online (Sandbox Code Playgroud)

criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我的criteria对象有所有这些别名?在哪种情况下,getAlias()方法会返回什么?

来自API:

获取此条件实例封装的实体的别名.

我的印象是所有的别名都被这个实例封装了?我错了吗?我不知何故失去了我的第一个别名?

如果我做的事情如下:

Criteria criteri2 = criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)

这是否意味着两者criteriacriteria2点都相同Criteria或差异,哪一个指向别名?

如果每个都createAlias返回一个Criteria应该我分配给原始criteria或新的?

好吧,我希望你能看到我的困惑.

alias hibernate criteria

6
推荐指数
1
解决办法
2万
查看次数

Hibernate返回重复,因为另一个表具有重复值

所以我有一个Users表,Projects表和User_Roles表.我有一个用户连接到2个项目,但是当我只有一个角色时,它会返回这2个项目,但如果我有2个角色,则返回4个角色(2x2个项目).我如何防止这种情况发生

这是我返回用户项目列表的代码

@Override
public List<Project> retrieve(User user) {
    Criteria criteria = super.createCriteria();
    criteria.addOrder(Order.desc("date"));
    criteria.createCriteria("users").add(Restrictions.eq("id", user.getId()));

    return (List<Project>) criteria.list();
}
Run Code Online (Sandbox Code Playgroud)

用户类中的映射

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Users_Projects",
           joinColumns = @JoinColumn(name = "UserID"), inverseJoinColumns =   @JoinColumn(name = "ProjectID"))
public List<Project> getProjects() {
    return projects;
} 

@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@Column(name = "RoleType")
@JoinTable(name = "User_Roles", joinColumns = @JoinColumn(name = "UserID"))
public Set<Role> getRoles() {
    return roles;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议在这里有什么问题吗?

TNX

mapping annotations hibernate criteria duplicates

5
推荐指数
1
解决办法
5977
查看次数

Hibernate 别名到一个简单的布尔字段

我正在努力使用 Hibernate Criteria API。

在课堂上Conversation我有:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(name = "Conversation_ConversationParticipants",
           joinColumns = @JoinColumn(name = "ConversationID"), 
           inverseJoinColumns = @JoinColumn(name = "ConversationParticipantID"))
private List<ConversationParticipant> participants;
Run Code Online (Sandbox Code Playgroud)

在课堂上ConversationParticipant我有:

@OneToOne
@JoinColumn(name = "ParticipantID")
private User participant;

@Type(type = "true_false")
@Column(name = "Viewed")
private boolean viewed;
Run Code Online (Sandbox Code Playgroud)

在我的标准中,我有

    Criteria criteria = super.createCriteria();
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    criteria.createAlias("participants", "participants");  
    criteria.createAlias("participants.participant", "participant");
    criteria.add(Restrictions.eq("participant.id", user.getId()));

    return (List<Conversation>) criteria.list();
Run Code Online (Sandbox Code Playgroud)

这一切正常,我可以看到给定用户的所有对话。但是,我想要的是查看用户尚未查看的所有对话。为此,我尝试添加:

    criteria.add(Restrictions.eq("participants.viewed", false)); 
Run Code Online (Sandbox Code Playgroud)

但是,这会返回 0 个对话(如果我输入“true”,我会得到相同的结果,并且我已经检查了 db 并确保存在 true 和 false 的值)。我怎样才能做到这一点?我究竟做错了什么?

运行的查询是:

from
    Conversations this_ 
inner …
Run Code Online (Sandbox Code Playgroud)

alias hibernate criteria restrictions

4
推荐指数
1
解决办法
2万
查看次数

手动复制netbeans中的插件

是否有可能手动将插件从一个版本复制到另一个版本?基本上我想将Netbeans 7.3 beta 2中的插件复制到Netbeans 7.3(最终版本).

有问题的插件是JIRA.

Alos如果有人知道如何安装它(我可以手动下载以前版本的插件)

我尝试过很少的东西但是没有用过.

plugins netbeans netbeans-7

2
推荐指数
1
解决办法
8277
查看次数