小编max*_*xdj的帖子

使用条件查询检索多态Hibernate对象

在我的模型中,我有一个抽象的"用户"类,以及多个子类,如Applicant,HiringManager和Interviewer.它们在一个表中,我有一个DAO来管理它们.

用户:

@Entity
@Table(name="User")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    name="role",
    discriminatorType=DiscriminatorType.STRING
)
public abstract class User extends BaseObject implements Identifiable<Long> ...
Run Code Online (Sandbox Code Playgroud)

HiringManager(例如):

@Entity
@DiscriminatorValue("HIRING_MANAGER")
public class HiringManager extends User ...
Run Code Online (Sandbox Code Playgroud)

现在,如果我想让所有与部门无关的招聘经理,我该怎么做?我想它看起来像是这样的:

DetachedCriteria c = DetachedCriteria.forClass(User.class);
c.add(Restrictions.eq("role", "HIRING_MANAGER"));
c.add(Restrictions.isNull("department"));
List<User> results = getHibernateTemplate().findByCriteria(c);
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,Hibernate抱怨"无法解析属性:角色"(这实际上是有道理的,因为User类实际上没有明确的角色属性)
那么正是我正在尝试做的事情的正确方法是什么?

polymorphism hibernate jpa criteria detachedcriteria

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

Javascript:等到ajax请求完成关闭页面

我希望浏览器保持页面打开,直到发送ajax请求.这就是我想象的样子

var requestsPending = 0;

window.onbeforeunload = function() {
    showPleaseWaitMessage();
    while(requestsPending > 0);
}

// called before making ajax request, atomic somehow
function ajaxStarted() {
    requestsPending++;
}
// called when ajax finishes, also atomic
function ajaxFinished() {
    requestsPending--;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,JS不做多线程.根据我的理解,回调(ajaxFinished)永远不会被执行,因为浏览器会尝试等到while循环结束执行它,因此它将永远循环.

这样做的正确方法是什么?有没有办法强制JS评估其待办事项列表中的下一个东西,然后回到while循环?或者使用ajax调用"加入"一些语法?我正在使用DWR作为我的ajax.

谢谢,-Max

javascript ajax dwr

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

经理/交易的目的是什么?

我是第一次建立一个弹簧应用程序.我遇到了很多并发问题,我怀疑我管理后端的方式有问题.我可以看到我的后端代码和我见过的示例之间的唯一区别是经理类.

在我的代码中,我有我的模型(由hibernate管理)和我的DAO,在模型上进行CRUD /搜索/等.在我看过的示例代码中,他们从不直接使用DAO.相反,他们使用间接调用DAO的管理器类.对我来说,这似乎是无意义的代码重复.

这些经理课程是什么?我已经读过他们将我的代码包装在"交易"中,但为什么我会想要呢?

java spring transactions appfuse

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