Java新人,想请教一个问题:上图是代码结构.package com.user.model;import java.io.Serializable;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="USER")
public class User implements Serializable { private static final long serialVersionUID = -2992495407019337009L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String username;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}服务器端中有实体类User(序列化),package com.user.service;import javax.ejb.Remote;import com.user.model.User;@Remote
public interface UserService { public String saveUser(User user);
public User findUser(int id);
}接口UserService(@Remote),package com.user.service.impl;import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import com.user.model.User;
import com.user.service.UserService;@Stateless(mappedName="UserService")
public class UserServiceBean implements UserService { @PersistenceContext(unitName="test")
private EntityManager entityManager;
public String saveUser(User user) {
entityManager.persist(user);
return user.getUsername();
} public User findUser(int id) {
User user = entityManager.find(User.class, id);
return user;
}}实现UserServiceBean(@statless).SessionBean已经成功发布在GlassFish上.package com.user.manager;import javax.naming.InitialContext;import com.user.model.User;
import com.user.service.UserService;public class UserManager { public static void main(String[] args) throws Exception {
InitialContext initialContext = new InitialContext();
UserService userService = (UserService) initialContext.lookup("UserService");
//Insert record
// User user = new User();
// user.setUsername("Zhangsan");
// userService.saveUser(user);
//Find record
User user = userService.findUser(3);
System.out.println(user.getId() + " " + user.getUsername());
}
}以上是客户端代码.但运行第一部分insert record是传入User实体对象的时候,在服务器端总是空值.以上1,2两条是插入的数据,因为id是自动生成的,但username一直是空值.
May 27, 2017 11:36:23 PM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
3 wangwu
如果运行第二部分find record时,能查出数据库里的记录.这是什么问题,我哪里做错了,请前辈指教.
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="USER")
public class User implements Serializable { private static final long serialVersionUID = -2992495407019337009L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String username;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}服务器端中有实体类User(序列化),package com.user.service;import javax.ejb.Remote;import com.user.model.User;@Remote
public interface UserService { public String saveUser(User user);
public User findUser(int id);
}接口UserService(@Remote),package com.user.service.impl;import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import com.user.model.User;
import com.user.service.UserService;@Stateless(mappedName="UserService")
public class UserServiceBean implements UserService { @PersistenceContext(unitName="test")
private EntityManager entityManager;
public String saveUser(User user) {
entityManager.persist(user);
return user.getUsername();
} public User findUser(int id) {
User user = entityManager.find(User.class, id);
return user;
}}实现UserServiceBean(@statless).SessionBean已经成功发布在GlassFish上.package com.user.manager;import javax.naming.InitialContext;import com.user.model.User;
import com.user.service.UserService;public class UserManager { public static void main(String[] args) throws Exception {
InitialContext initialContext = new InitialContext();
UserService userService = (UserService) initialContext.lookup("UserService");
//Insert record
// User user = new User();
// user.setUsername("Zhangsan");
// userService.saveUser(user);
//Find record
User user = userService.findUser(3);
System.out.println(user.getId() + " " + user.getUsername());
}
}以上是客户端代码.但运行第一部分insert record是传入User实体对象的时候,在服务器端总是空值.以上1,2两条是插入的数据,因为id是自动生成的,但username一直是空值.
May 27, 2017 11:36:23 PM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
3 wangwu
如果运行第二部分find record时,能查出数据库里的记录.这是什么问题,我哪里做错了,请前辈指教.
我的客户端有配置jndi.properties,按照我前面说的,服务端能够返回实例对象到客户端,客户端也能传参数给服务器端了,但就是实例对象类型的传不了.
java.naming.factory.url.pkgs=com.sun.enterprise.naming
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
org.omg.CORBA.ORBInitialHost=192.168.93.8
org.omg.CORBA.ORBInitialPort=3700
May 27, 2017 11:36:23 PM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.你做插入的时候,打印一下信息,save是有返回值的