首先是错误信息log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate: 
    select
        ID as U_ID,
        USER_NAME as USER_NAME 
    from
        ZS_COM_USER
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74)
at com.test.jpa.NativeSql.main(NativeSql.java:20)
Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1723)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65)
... 1 more
Caused by: java.sql.SQLException: 列名无效
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:439)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3352)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1883)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:424)
at org.hibernate.type.StringType.get(StringType.java:41)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105)
at org.hibernate.type.ComponentType.hydrate(ComponentType.java:583)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 8 more
相关类如下:
Entity:package com.zshome.bean.web.User;import java.util.Date;import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.FetchType;
import javax.persistence.FieldResult;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
import javax.persistence.OneToOne;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;import com.zshome.bean.common.BaseBean;/**
 * @description: 注册用户登陆实体信息
 * 
 * @author [email protected]
 * @time 2011-10-01
 * @since 1.0
 * @update:no
 * 
 */
@NamedNativeQueries( { @NamedNativeQuery(name = "getUser", 
query = "select ID as U_ID, " +
        "USER_NAME as USER_NAME " +
"from ZS_COM_USER", 
resultSetMapping = "getUser") })
@SqlResultSetMapping(name = "getUser", entities = @EntityResult(entityClass = User.class, fields = {
@FieldResult(name = "id", column = "U_ID"),
@FieldResult(name = "userName", column = "USER_NAME") }))
@Entity
@Table(name = "ZS_COM_USER")
public class User {
/** ID主键 **/
private String id; /** 邮箱 */
private String email; /** 密码 **/
private String password; /** 用户名 **/
private String userName; /** 用户状态(1有效,0无效) **/
private String isEffective = "1"; private UserInfo userInfo; private BaseBean bb = new BaseBean(); public User() {
} public User(String userName, String password, String isEffectvie,
String createBy, Date dateCreate, String updateBy, Date dateUpdate) {
this.userName = userName;
this.password = password;
this.isEffective = isEffectvie;
bb.setCreateBy(createBy);
bb.setDateCreate(dateCreate);
bb.setUpdateBy(updateBy);
bb.setDateUpdate(dateUpdate);
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
} public BaseBean getBb() {
return bb;
} @Column(length = 50, nullable = false, unique = true)
public String getEmail() {
return email;
} @Id
@Column(name = "ID")
@GeneratedValue
public String getId() {
return id;
} @Column(length = 10, nullable = false, name = "IS_EFFECTIVE", unique = true)
public String getIsEffective() {
return isEffective;
} @Column(length = 32, nullable = false, name = "PASSWORD")
public String getPassword() {
return password;
} @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "FK_ZX_COM_USER_INFO_ID")
public UserInfo getUserInfo() {
return userInfo;
} @Column(length = 20, nullable = false, name = "USER_NAME", unique = true)
public String getUserName() {
return userName;
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
} public void setBb(BaseBean bb) {
this.bb = bb;
} public void setEmail(String email) {
this.email = email;
} public void setId(String id) {
this.id = id;
} public void setIsEffective(String isEffective) {
this.isEffective = isEffective;
} public void setPassword(String password) {
this.password = password;
} public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
} public void setUserName(String userName) {
this.userName = userName;
}
}
实体测试类package com.test.jpa;import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class NativeSql {

public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("manager1");
EntityManager entityManager = factory.createEntityManager();
Query query = entityManager.createNamedQuery("getUser");
query.getResultList();
}
}
补充说明:关于该原生Sql在Oracle中执行是没有问题的,估计是实体映射时出了问题!
在线求解……
谢谢!