小编Jim*_*ank的帖子

JPA和Hibernate中persist()和merge()有什么区别?

Hibernate中persist()和merge()有什么区别?

persist() 可以创建UPDATE和INSERT查询,例如:

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
A a=new A();
session.persist(a);
a.setName("Mario");
session.flush();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,查询将生成如下:

Hibernate: insert into A (NAME, ID) values (?, ?)
Hibernate: update A set NAME=? where ID=?
Run Code Online (Sandbox Code Playgroud)

所以persist()方法可以生成插入和更新.

现在merge():

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();
Run Code Online (Sandbox Code Playgroud)

这是我在数据库中看到的:

SINGER_ID   SINGER_NAME
1           Ricky Martin
2           Madonna
3           Elvis Presley
4           Luciano Pavarotti
Run Code Online (Sandbox Code Playgroud)

现在使用更新记录 merge()

SessionFactory sef = …
Run Code Online (Sandbox Code Playgroud)

java orm entity hibernate jpa

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

使用Hibernate 4.0与Tomcat 7和JSF 2.0时的JndiException

应用程序部署后,当方法执行时,我得到以下错误.

Caused by: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:comp/env/JSF_HIBER/ORACLE]
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68)
    at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:77)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2283)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2279)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1748)
    at com.utils.HibernateUtils.<clinit>(HibernateUtils.java:19)
    ... 33 more
Caused by: javax.naming.NamingException: This context must be accessed through a java: URL
    at org.apache.naming.SelectorContext.parseName(SelectorContext.java:776)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:135)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:65)
    ... 47 more
Run Code Online (Sandbox Code Playgroud)

的context.xml

<Resource name="JSF_HIBER/ORACLE" auth="Container"
    type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"
    username="****" password="**** driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@99.99.999.999:1521:xe" /> …
Run Code Online (Sandbox Code Playgroud)

java tomcat hibernate

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

JSF2 + Primefaces:DataTable延迟加载问题

我想,我的java代码是正确的,但记录没有显示在dataTable上.

请检查以下代码.我不知道我犯了什么错误.

.xhtml

 <p:dataTable value="#{userDetailList.userDataList}" var="user" rows="5" 
                            paginator="true" lazy="true" 
                            paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} 
{CurrentPageReport} {NextPageLink} {LastPageLink}">

                        <p:column headerText="No">
                            <h:outputText value="#{user.id}"></h:outputText>
                        </p:column>

                        <p:column headerText="User Name">
                            <h:outputText value="#{user.userName}"></h:outputText>
                        </p:column>



                    </p:dataTable>
Run Code Online (Sandbox Code Playgroud)

的.java

@PostConstruct
    public void init(){
        // +getter , setter
        userDataList = new LazyDataModel<UserDetail>(){

            private static final long serialVersionUID = 1L;

            @Override
            public List<UserDetail> load(int first, int pageSize, String sortField,
                    SortOrder sortOrder, Map<String, String> filters) {

                return lazyDataModelCom.getResultList(first, pageSize, sortField, sortOrder, filters);
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

getResultList

public List<UserDetail> getResultList(int first, int pageSize, String sortField, …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces jsf-2

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

标签 统计

hibernate ×2

java ×2

entity ×1

jpa ×1

jsf ×1

jsf-2 ×1

orm ×1

primefaces ×1

tomcat ×1