小编And*_*daP的帖子

更新父级时,Hibernate @OneToMany会从列表中删除子级

我有以下实体:

球队

@Entity
@Table
public class Team {
[..]
private Set<UserTeamRole> userTeamRoles;

/**
 * @return the userTeamRoles
 */
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "team", fetch = FetchType.LAZY)
public Set<UserTeamRole> getUserTeamRoles() {
    return userTeamRoles;
}

/**
 * @param userTeamRoles
 *            the userTeamRoles to set
 */
public void setUserTeamRoles(Set<UserTeamRole> userTeamRoles) {
    this.userTeamRoles = userTeamRoles;
}
Run Code Online (Sandbox Code Playgroud)

}

USER_TEAM_ROLE

@Entity
@Table(name = "user_team_role")
public class UserTeamRole {

 @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
 @JoinColumn(name = "FK_TeamId")
 public Team getTeam() {
    return …
Run Code Online (Sandbox Code Playgroud)

database hibernate jpa associations one-to-many

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

TreeViewer的上下文菜单基于所选节点 - SWT

我需要在Eclipse插件项目中为TreeViewer创建一个上下文菜单.但是,菜单不应包含常量项,它们应根据所选节点的类型而有所不同.例如,我的treeViewer具有以下层次结构:

Node A
 |
 --Node B
  |
   --Node C
Run Code Online (Sandbox Code Playgroud)

对于节点A - 我想显示带有操作的菜单,但是对于节点B和CI,不希望显示任何内容(没有菜单).我设法为节点A创建菜单,但是当选择其他类型的节点时,我无法摆脱它.我的代码看起来像:

treeViewer.addSelectionChangedListener(
            new ISelectionChangedListener(){
                public void selectionChanged(SelectionChangedEvent event) {
                    if(event.getSelection() instanceof IStructuredSelection) {
                        IStructuredSelection selection = (IStructuredSelection)event.getSelection();            
                        Object o = selection.getFirstElement();     

                        MenuManager menuMgr = new MenuManager();

                        if (o instanceof NodeA){

                            Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
                            treeViewer.getControl().setMenu(menu);
                            getSite().registerContextMenu(menuMgr, treeViewer);

                            menuMgr.add(new SomeAction());

                        }else {
                            //what ?
                        }
                    }

                }
            }   
    );
Run Code Online (Sandbox Code Playgroud)

在else分支我试着拨打dispose(),removeAll()在MenuManager ...没有什么工作!

任何帮助表示赞赏,谢谢.

java eclipse swt eclipse-plugin

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

PrimeFaces commandButton在confirmDialog中没有调用backing bean

我有一个PrimeFaces数据表,显示一组用户,每行都有一个要删除的commandLink.单击链接时,将显示confirmDialog,其中显示"是"按钮,该按钮应调用辅助bean中的"删除"方法.不幸的是,没有调用此方法,只是隐藏了对话框.设置链接中的参数是因为我在调试器中看到了它.

这是我的页面:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head><title>Manage users</title></h:head> 
<h:body>
<ui:composition template="../../template/commonLayout.xhtml">
    <ui:define name="content">
        <p:layoutUnit position="center">
            <h:form id="datatable">
                <p:tabView>
                    <p:tab title="Users">
                        <p:button value = "Add user" outcome="addUser.xhtml?faces-redirect=true"/>
                        <p:growl id="messages" showDetail="true"/>  
                        <p:dataTable id="usersTable" var="user" value="#{userMB.userList}" paginator="true" rows="25" 
                                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
                            <p:ajax event="rowEdit" listener="#{userMB.onEditUser}"  />
                            <p:column headerText="First name">
                                <h:outputText value="#{user.firstName}" />  
                            </p:column> 
                            <p:column headerText="Last name">
                                <h:outputText value="#{user.lastName}" />  
                            </p:column> 
                            <p:column headerText="E-mail">
                                <h:outputText value="#{user.email}" />  
                            </p:column>
                            <p:column headerText="Username"> …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces

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

获取Javassist类型而不是实际的Hibernate实体类型

我偶然发现了一个非常烦人的情况:我使用Hibernate和Spring作为我的应用程序的后端,似乎在某些情况下,与特定实体关系的实体不会从DB获取为正常的实体对象,但作为Javassist类型.例如:

我的Campaign实体具有以下关系:

@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
  [..]
  @ManyToMany(fetch = FetchType.LAZY)
  @JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
        "campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
  private List<Dealer> dealers = new ArrayList<Dealer>();

@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
        "campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate javassist

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

JPA EntityManager 大内存问题

我在使用 Spring、Hibernate 和 JPA 的 Web 应用程序中遇到一些问题。问题是内存消耗非常高,随着时间的推移,内存消耗会增加,而且似乎永远不会减少。它们很可能源于 EntityManager 的错误使用。我已经四处寻找,但还没有找到确定的东西。

我们使用的 DAO 都扩展了以下 GenericDAO,其中注入了我们唯一的 EntityManager:

public abstract class GenericDAOImpl<E extends AbstractEntity<P>, P> implements
    GenericDAO<E, P> {

@PersistenceContext
@Autowired
private EntityManager entityManager;
    [...]
Run Code Online (Sandbox Code Playgroud)

使用通用 DAO 是因为它具有通过 ID 等获取实体的方法,这在所有约 40 个 DAO 中实现起来会很痛苦。

EntityManager 通过以下方式配置为 Spring bean:

<bean class="org.springframework.orm.jpa.JpaTransactionManager"
    id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven mode="aspectj"
    transaction-manager="transactionManager" />
<bean
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    id="entityManagerFactory">
    <property name="persistenceUnitName" value="persistenceUnit" />
    <property name="dataSource" ref="dataSource" />
</bean>
<bean id="entityManager" factory-bean="entityManagerFactory"
    factory-method="createEntityManager" scope="singleton" />
Run Code Online (Sandbox Code Playgroud)

我认为最大的问题是使用这个共享的 EntityManager 来处理所有事情。在服务类中,我们对需要事务的方法使用@Transactional 注释。这会根据我读取的内容自动刷新 EntityManager,但与清除不同,所以我猜对象仍在内存中。

我们注意到每天都会在数据库中自动导入数据后内存会增加(大约 …

java spring hibernate jpa entitymanager

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

JSF - 基于角色的页面显示

我正在使用JSF 2.0和PrimeFaces启动一个Web应用程序项目.其中一个要求是根据用户角色显示不同的页面内容.例如,只有管理员才能看到菜单项 - 用户管理.

安全方面我会选择Spring安全.

怎么能以优雅的方式实现呢?我应该为每个人制作一个xhtml模板,然后使用特定于角色的UI项为每个角色创建不同的页面吗?

谢谢

java jsf spring-security primefaces jsf-2

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

JSF 2.0导航无法正常工作

我正在尝试使用JSF 2.0.我正在尝试一个基本的导航示例,但它无法正常工作.

文件结构如下:

在此输入图像描述

我在web.xml中配置了映射:

<!-- Change to "Production" when you are ready to deploy -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

索引页面有2个按钮,可以在单击时将您带到不同的页面

faces-config.xml文件定义了一些导航案例:

<!-- Configuration of navigation rules -->  
<navigation-rule>
    <from-view-id>/index.xhtml</from-view-id> 
    <navigation-case>
        <from-outcome>success</from-outcome>
        <to-view-id>/pages/success.xhtml</to-view-id>
    </navigation-case>
     <navigation-case>
        <from-outcome>error</from-outcome>
        <to-view-id>/pages/error.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
Run Code Online (Sandbox Code Playgroud)

例如,以下按钮将带您进入成功页面(/pages/success.xhtml):

<p:commandButton id="addUser" value="Add" action="#{userMB.addUser}" ajax="false"/>
Run Code Online (Sandbox Code Playgroud)

我调试了这个addUser的返回值肯定是"成功".

该页面切换到success.xhtml,因为我看到内容已更改,但浏览器URL指向index.xhtml ....

在启动时:URL是localhost:8080/PROJECT /没有index.xhtml可能是因为我们将其配置为欢迎文件.当我们点击上面的按钮时,URL变为localhost:8080/PROJECT/index.xhtml

我相信我对映射或相对路径搞砸了.我找到了一些建议,唯一的映射应该是*.xhtml,但我真的不明白为什么以及如何处理页面的多个子文件夹.

任何帮助表示赞赏,谢谢

navigation jsf primefaces jsf-2

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

PrimeFaces CSS皮肤未在登录页面中显示,也是JavaScript未定义的错误

我在我的网络应用程序中使用PrimeFaces 3.4,对于特定页面,控件不会与普通的PrimeFaces皮肤一起显示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>VMS login</title>
</h:head> 
<h:body> 
  <h:form id="loginForm">
    <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />  
    <p:panel header="#{msgs['login.title']}">
      <p:panelGrid id="loginPanel" columns="2">
        <h:outputText value="#{msgs['login.username']}" />
        <p:inputText id="j_username" value="#{loginFormBean.userName}" required="true"></p:inputText>
        <p:message for="j_username" ></p:message>
        <h:outputText value="#{msgs['login.password']}" />
        <p:password id="j_password" value="#{loginFormBean.password}" required="true" feedback="false"></p:password>
        <p:message for="j_password"></p:message>
        <p:commandButton action="#{loginController.loginUsingSpringAuthenticationManager}" value="#{msgs['login.button']}" update="loginForm" ajax="true"></p:commandButton>
      </p:panelGrid>
    </p:panel>
  </h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

这输出到:

在此输入图像描述

面板应该有一个标题,依此类推.

有趣的是,在我<p:layout>在布局中使用不同面板的另一个页面中,它们显示正常的PrimeFaces外观和感觉.

我究竟做错了什么?谢谢

jsf look-and-feel primefaces jsf-2 login-page

3
推荐指数
1
解决办法
1583
查看次数

带有Spring安全性的JSF - 登录后重定向到指定页面

我有一个使用JSF的Web应用程序,Spring安全性用于登录和授权.

当用户键入特定页面并且他没有登录时,例如localhost:8080/APP/page.xhtml,应用程序重定向到登录页面即可.之后,用户已登录,但他被重定向到的页面index.xhtml是默认的欢迎页面,而不是page.xhtml.

我想要以下行为:用户去localhost:8080/APP/page.xhtml,他被重定向到登录,之后他应该被重定向到他想要的页面 - page.xhtml.

已编辑 - spring-security.xml的片段:

 <security:http auto-config="true">
    <security:intercept-url pattern="/javax.faces.resource/*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <security:intercept-url pattern="/login.xhtml" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

    <security:intercept-url pattern="/**" access="ROLE_UNALLOCATED, ROLE_MANAGER"/>
    <security:intercept-url pattern="/pages/management/" access="ROLE_MANAGER"/>
    <security:intercept-url pattern="/pages/requests/" access="ROLE_UNALLOCATED, ROLE_EMPLOYEE, ROLE_TEAM_LEADER, ROLE_MANAGER"/>

    <security:form-login login-page="/login.xhtml" 
                          />
    <security:logout logout-url="/j_spring_security_logout"
            logout-success-url="/login.xhtml"
            invalidate-session="true"/>
</security:http>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

编辑:

我以为是因为:

 <!-- Welcome page -->
<welcome-file-list>
    <welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)

来自web.xml.我删除了这个,但结果相同.

稍后编辑:

我刚注意到我的自定义loginController中的一行,之后if (authenticationResponseToken.isAuthenticated())几乎肯定是问题的根源:

loginController:

@ManagedBean(name = "loginController")
@SessionScoped
@Controller
public class LoginController implements Serializable {
private static final long serialVersionUID …
Run Code Online (Sandbox Code Playgroud)

jsf spring spring-security jsf-2

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

通过键减去两个HashMaps中的值的有效方法

我想知道如何在键匹配时有效地减去两个映射的值.目前我有2 HashMap<String,Integer>并且这样做:

for (String key: map1.keySet()){
   if (map2.keySet().contains(key)){
       //subtract
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

java hashmap

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