How to inject Values into a Null Object Using #Autowired in Spring IOC? - spring

I just started working on a Spring Rest Application, currently I am managing the authentication operations, what I want to do is to Simply check if the typed email address is already used, the problem is that when It doesn't exist I can't autowire the bean User I get a NullPointerException.
I found similar questions in SOF but my code seems to be correct, please Help.
Here is My Code :
Project Architecture
User.java:
#Component
#Entity
#JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="idUser", scope = User.class)
public class User implements Serializable{
#Id
#GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idUser;
#Column(name = "login", unique = true)
private String login;
private String password;
private String nom;
private String prenom;
private String email;
private long telephone;
private String statut;
private int isDeleted;
#JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
#ManyToOne(fetch = FetchType.LAZY)
private Role userRole;
public User(Long idUser, String login, String password, String nom, String prenom, String email,
long telephone, String statut, int isDeleted, Role userRole) {
super();
this.idUser = idUser;
this.login = login;
this.password = password;
this.nom = nom;
this.prenom = prenom;
this.email = email;
this.telephone = telephone;
this.statut = statut;
this.isDeleted = isDeleted;
this.userRole = userRole;
}
public User() {
super();
}
public Long getIdUser() {
return idUser;
}
public void setIdUser(Long idUser) {
this.idUser = idUser;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getTelephone() {
return telephone;
}
public void setTelephone(long telephone) {
this.telephone = telephone;
}
public String getStatut() {
return statut;
}
public void setStatut(String statut) {
this.statut = statut;
}
public int getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(int isDeleted) {
this.isDeleted = isDeleted;
}
public Role getUserRole() {
return userRole;
}
public void setUserRole(Role userRole) {
this.userRole = userRole;
}}
UserRepository.java:
#Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByLoginLikeAndPasswordLikeAndIsDeletedEquals(String login, String password, int i);
User findByLoginLike(String login);
}
UserDTO.java
#Component
public class UserDTO {
private Long idUser;
private String login;
private String password;
private String role ;
public UserDTO(Long idUser, String login, String password, String role) {
super();
this.idUser = idUser;
this.login = login;
this.password = password;
this.role = role;
}
public UserDTO() {
super();
}
public Long getIdUser() {
return idUser;
}
public void setIdUser(Long idUser) {
this.idUser = idUser;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
UserService.java :
#Service
public class UserService {
#Autowired
private UserDTO userDto;
#Autowired
private User user;
#Autowired
private UserRepository userRep;
#Autowired
private RoleRepository roleRep;
public boolean addUser(String login, String password, String role) {
boolean state = false;
try {
System.out.println(user.toString());
user = userRep.findByLoginLike(login);
if (user == null) {
user.setPassword(password);
user.setLogin(login);
user.setUserRole(roleRep.findByNomRoleLike(role));
userRep.save(user);
state = true;
} else {
System.out.println("user already exists");
state = false;
}
} catch (Exception e) {
e.printStackTrace();
state = false;
}
return state;
}
UserController.java
#RestController
public class UserControler {
#Autowired
private User user;
#Autowired
private UserRepository userRep;
#Autowired
private List<User> allUsers;
#Autowired
private UserService userService;
#Autowired
private UserDTO userDTO;
#RequestMapping( value = "/addUser", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Boolean addUser(#RequestBody UserDTO u){
boolean state = false;
try {
state = userService.addUser(u.getLogin(), u.getPassword(), "Administrateur");
} catch (Exception e) {
e.printStackTrace();
}
return state;
}
StackTrace :
Hibernate: select users0_.user_role_id_role as user_ro10_1_0_,
users0_.id_user as id_user1_1_0_, users0_.id_user as id_user1_1_1_,
users0_.email as email2_1_1_, users0_.is_deleted as is_delet3_1_1_,
users0_.login as login4_1_1_, users0_.nom as nom5_1_1_,
users0_.password as password6_1_1_, users0_.prenom as prenom7_1_1_,
users0_.statut as statut8_1_1_, users0_.telephone as telephon9_1_1_,
users0_.user_role_id_role as user_ro10_1_1_ from user users0_ where
users0_.user_role_id_role=? 2018-12-20 14:25:58.061 TRACE 6192 ---
[nio-8080-exec-5] o.h.type.descriptor.sql.BasicBinder : binding
parameter 1 as [BIGINT] - [3] 2018-12-20 14:26:36.015 WARN 6192 ---
[nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved
exception caused by handler execution:
org.springframework.web.HttpRequestMethodNotSupportedException:
Request method 'POST' not supported
java.lang.NullPointerException at
com.akkaprofil.service.UserService.addUser(UserService.java:63) at
com.akkaprofil.controller.UserControler.addUser(UserControler.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at
java.lang.reflect.Method.invoke(Unknown Source) at
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:849)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:760)
at
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
When I call the AddUser Request method, this Exception is triggered, I can't find the reason why values are not set to the user Object when the email adress is not found, All the classes are annotated woth their Stereotypes, the user
Bean is autowired, I haven't declared a new Operator.
Would you clarify the cause behind this Exception.
Thank you

Related

unable to query findOne - SpringMVC MongoDB

I am trying to login but unable to login because findOne query fails in DAOimplementation. I put series of system.out.println to see where does things go wrong.
and I get this
email: abcdef Password : 123123
email2: abcdef Password2: 123123
check 1
check 2
for some reason program wont reach to check 3, check 4 and inside if condition where user != null.
I tried mongoTemplate, mongoOperations, using addCriteria without criteria but no luck.
Code: UserDaoImplementation
import com.mthree.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
#Repository
#Service(value = "userDao")
public class UserDaoImpl implements UserDao {
#Autowired
MongoTemplate mongoTemplate;
private static final String COLLECTION_NAME = "user";
public List<User> listUser() {
return mongoTemplate.findAll(User.class, COLLECTION_NAME);
}
public void add(User user) {
if(!mongoTemplate.collectionExists(User.class)){
mongoTemplate.createCollection(User.class);
}
user.setId(UUID.randomUUID().toString());
mongoTemplate.insert(user, COLLECTION_NAME);
}
public void update(User user) {
mongoTemplate.save(user);
}
public void delete(User user) {
mongoTemplate.remove(user, COLLECTION_NAME);
}
public User findUserById(String id) {
return mongoTemplate.findById(id, User.class);
}
#Override
public User login(String Email, String Password) {
System.out.println("email2: "+ Email + " Password2: "+ Password);
try {
System.out.println("check 1");
Query query = new Query();
System.out.println("check 2");
// User user = mongoTemplate
// .findOne(query.addCriteria(Criteria.where("Email").is(Email)), User.class, COLLECTION_NAME);
User user = mongoTemplate.findOne(query(where("Email").is(Email)), User.class,COLLECTION_NAME);
System.out.println("check 3");
if(user != null){
//return user;
System.out.println("check 4");
System.out.println("password3: "+ Password + " Password4: "+ user.getPassword());
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//{} t y
if(bCryptPasswordEncoder.matches(Password, user.getPassword())) {
return user;
}
}
return null;
}catch (Exception e){
return null;
}
}
#Override
public void register(User user) {
mongoTemplate.insert(user);
}
#Override
public void changeProfile(User user) {
mongoTemplate.save(user);
}
}
Controller
#RequestMapping(value="/login", method= RequestMethod.POST)
public String login(#ModelAttribute("user") User user, HttpSession session, ModelMap modelMap){
//simply checking the values my password is not yet encrypted
System.out.println("email: "+ user.getEmail() + " Password : "+ user.getPassword());
User user2 = userService.login(user.getEmail(), user.getPassword());
if(user2 == null){
modelMap.put("error", "Invalid User");
return "account/login";
}else{
session.setAttribute("username", user.getFirstname());
return "account/welcome";
}
//BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
// userService.register(user);
//return "redirect:../login";
}
User - model
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
#Document
public class User {
#Id
private String id;
private long UserId;
private String Firstname;
private String Lastname;
private String Email;
private String Password;
private String Role;
private long CountryCode;
private long MobileNumber;
private String City;
private String Address;
public User(){
super();
}
public User(String id, long userId, String firstname, String lastname, String email, String password, String role, long countryCode, long mobileNumber, String city, String address) {
super();
this.id = id;
this.UserId = userId;
this.Firstname = firstname;
this.Lastname = lastname;
this.Email = email;
this.Password = password;
this.Role = role;
this.CountryCode = countryCode;
this.MobileNumber = mobileNumber;
this.City = city;
this.Address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public long getUserId() {
return UserId;
}
public void setUserId(long userId) {
this.UserId = userId;
}
public String getFirstname() {
return Firstname;
}
public void setFirstname(String firstname) {
this.Firstname = firstname;
}
public String getLastname() {
return Lastname;
}
public void setLastname(String lastname) {
this.Lastname = lastname;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
this.Email = email;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
this.Password = password;
}
public String getRole() {
return Role;
}
public void setRole(String role) {
this.Role = role;
}
public long getCountryCode() {
return CountryCode;
}
public void setCountryCode(long countryCode) {
this.CountryCode = countryCode;
}
public long getMobileNumber() {
return MobileNumber;
}
public void setMobileNumber(long mobileNumber) {
this.MobileNumber = mobileNumber;
}
public String getCity() {
return City;
}
public void setCity(String city) {
this.City = city;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
this.Address = address;
}
}
Stack Trace
e: org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property email found on com.mthree.model.User!
org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property email found on com.mthree.model.User!
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:257)
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:230)
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:205)
at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.getPath(QueryMapper.java:867)
at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:758)
at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:735)
at org.springframework.data.mongodb.core.convert.QueryMapper.createPropertyField(QueryMapper.java:231)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:129)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1760)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1750)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:624)
at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:589)
at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:581)
at com.mthree.dao.UserDaoImpl.login(UserDaoImpl.java:67)
at com.mthree.service.UserServiceImpl.login(UserServiceImpl.java:38)
at com.mthree.controller.HomeController.login(HomeController.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Use proper Java (Beans) naming conventions:
CamelCase with first letter lowercase:
public User(String id, long userId, String firstname, String lastname, String email, String password, String role, long countryCode, long mobileNumber, String city, String address)
{
super();
this.id = id;
this.userId = userId;
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
this.password = password;
this.role = role;
this.countryCode = countryCode;
this.mobileNumber = mobileNumber;
this.city = city;
this.address = address;
}
Getter and Setter should be the field name with the first letter upper case and prefixed with get or set if present.
Properties referenced in queries/Strings are the same as the field name.
Note: There are some defiations from the actual Java Beans specification, e.g. the option to not have a default constructor.

Error: No string encryptor registered for hibernate with name "hibernateStringEncryptor" in with jasypt

I have a problem with Jasyt with Spring Boot and Hibernate.
When i try to write encrypted password into database i got an error:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'receptionistController': Invocation of init method failed; nested exception is org.jasypt.exceptions.EncryptionInitializationException: No string encryptor registered for hibernate with name "hibernateStringEncryptor"
hibernateStringEncryptor is registred in Configuration class
#Configuration
#EnableTransactionManagement
#ComponentScan(basePackages = "medical.center")
public class HibernateConfig {
#Bean
public void Test(){
System.out.println("Test");
}
public EnvironmentStringPBEConfig encryptorConfiguration(){
EnvironmentStringPBEConfig encryptor = new EnvironmentStringPBEConfig();
encryptor.setAlgorithm("PBEWithMD5AndDES");
encryptor.setPasswordSysPropertyName("beaver.encryption.password");
return encryptor;
}
public StandardPBEStringEncryptor standardStringEncryptor(){
StandardPBEStringEncryptor stringEncryptor = new StandardPBEStringEncryptor();
stringEncryptor.setConfig(encryptorConfiguration());
return stringEncryptor;
}
#Bean
#Autowired
public HibernatePBEStringEncryptor hibernateStringEncryptor(){
HibernatePBEStringEncryptor stringEncryptor = new HibernatePBEStringEncryptor();
stringEncryptor.setEncryptor(standardStringEncryptor());
stringEncryptor.setRegisteredName("hibernateStringEncryptor");
return stringEncryptor;
}
And User Class:
#Entity
#TypeDef(
name="encryptedString",
typeClass=EncryptedStringType.class,
parameters={#Parameter(name="encryptorRegisteredName",
value="hibernateStringEncryptor")}
public class User {
#Id
#GeneratedValue
private Long id;
private String login;
#Autowired
#Type(type="encryptedString")
private String password;
private String firstName;
private String lastName;
#Column(nullable=true)
private String email;
#Column(nullable=true)
private String phone;
#Column(nullable=true)
private LocalDate bornDate;
#CreatedDate
private LocalDateTime createTime;
#LastModifiedDate
private LocalDateTime modDate;
#Transient
private final static String[] rolesArray = { "Admin", "Doctor", "Patient", "Receptionist" };
private int role;
#Autowired(required=false)
#OneToMany(cascade = CascadeType.ALL)
#Column(nullable = true)
private List<UserMessage> userMessagesRecive;
#Autowired(required=false)
#OneToMany(cascade = CascadeType.ALL)
#Column(nullable = true)
private List<UserMessage> userMessagesSend;
public static String[] getRolesArray() {
return rolesArray;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public void setModDate(LocalDateTime modDate) {
this.modDate = modDate;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstMame) {
this.firstName = firstMame;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public LocalDate getBornDate() {
return bornDate;
}
public void setBornDate(LocalDate bornDate) {
this.bornDate = bornDate;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public String[] getRoles() {
return rolesArray;
}
public List<UserMessage> getUserMessagesRecive() {
return userMessagesRecive;
}
public void setUserMessagesRecive(List<UserMessage> userMessagesRecive) {
this.userMessagesRecive = userMessagesRecive;
}
public List<UserMessage> getUserMessagesSend() {
return userMessagesSend;
}
public void setUserMessagesSend(List<UserMessage> userMessagesSend) {
this.userMessagesSend = userMessagesSend;
}
public String getRoleByName(int role) {
return rolesArray[role];
}
}
And main method:
#SpringBootApplication
#EnableJpaRepositories("medical.center")
#ComponentScan(basePackages = "medical.center")
#EntityScan("medical.center")
#EnableTransactionManagement
public class MedicalCenterApplication {
public static void main(String[] args) {
SpringApplication.run(MedicalCenterApplication.class, args);
and Receptionist Class:
#RestController
public class ReceptionistController {
#Autowired
private final ReceptionistRepository receptionistRepository;
private final ReceptionistGenerator receptionistGenerator;
private static final Logger logger = Logger.getLogger(ReceptionistController.class);
public ReceptionistController(ReceptionistRepository receptionistRepository,
ReceptionistGenerator receptionistGenerator) {
this.receptionistRepository = receptionistRepository;
this.receptionistGenerator = receptionistGenerator;
}
#PostConstruct
public void runAtStart() {
receptionistRepository.save(receptionistGenerator.generate());
}
#GetMapping("/getRecepcionist")
public Receptionist getReceptionist() {
logger.info("Get Receptionist");
return receptionistRepository.getOne(1L);
}
}
Please help.
Lukasz

PersistentObjectException: Uninitialized proxy passed to persist

I am working with Spring Data JPA and an MySQL database for a records management system. Below are two entities that I have modeled and I am trying to persist a Policy record to the database:
Policy Entity:
public class Policy {
private String policyNumber;
private String policyName;
private Steward steward;
private PolicyHolder policyHolder;
#Id
#Column(length = 30)
public String getPolicyNumber() {
return policyNumber;
}
public void setPolicyNumber(String policyNumber) {
this.policyNumber = policyNumber;
}
#Column(length = 80)
public String getPolicyName() {
return policyName;
}
public void setPolicyName(String policyName) {
this.policyName = policyName;
}
#OneToOne(cascade = ALL, mappedBy = "policy", orphanRemoval = true, optional = false)
public PolicyHolder getPolicyHolder() {
return policyHolder;
}
}
PolicyHolder Entity:
#Entity
public class PolicyHolder extends PolicyMember {
private Policy policy;
public PolicyHolder() {
super();
}
#OneToOne
#JoinColumn(name = "policy_policyNumber", referencedColumnName = "policyNumber")
public Policy getPolicy() {
return policy;
}
public void setPolicy(Policy policy) {
this.policy = policy;
}
#Override
public String toString() {
return "PolicyHolder{" +
"policy=" + policy +
"} " + super.toString();
}
}
PolicyMember Entity:
#Entity
public abstract class PolicyMember {
private CompositePolicyMemberPK policyMemberId;
private String firstname;
private String surname;
private LocalDate dateOfDeath;
private LocalDate dateOfBirth;
private MemberStatus status;
private BillingStatus billingStatus;
private String nationalId;
private LocalDateTime creationDate;
private Gender gender;
private String msisdn;
private LocalDate closureDate;
private String createdBy;
private String memberType;
private PackageBenefit packageBenefit;
private List<DependantTransferRequest> transferRequests;
#EmbeddedId
public CompositePolicyMemberPK getPolicyMemberId() {
return policyMemberId;
}
public void setPolicyMemberId(CompositePolicyMemberPK policyMemberId) {
this.policyMemberId = policyMemberId;
}
#Column(length = 50)
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
#Column(length = 50)
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
#Convert(converter = MemberStatusConverter.class)
public MemberStatus getStatus() {
return status;
}
public void setStatus(MemberStatus status) {
this.status = status;
}
#Convert(converter = BillingStatusConverter.class)
public BillingStatus getBillingStatus() {
return billingStatus;
}
public void setBillingStatus(BillingStatus billingStatus) {
this.billingStatus = billingStatus;
}
#Column(length = 20)
public String getNationalId() {
return nationalId;
}
public void setNationalId(String nationalId) {
this.nationalId = nationalId;
}
#Enumerated(EnumType.STRING)
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
#Column(length = 15)
public String getMsisdn() {
return msisdn;
}
public void setMsisdn(String msisdn) {
this.msisdn = msisdn;
}
#Column(length = 50)
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
#Column(name = "memberType", insertable = false, updatable = false)
public String getMemberType() {
return memberType;
}
public void setMemberType(String memberType) {
this.memberType = memberType;
}
#OneToOne(mappedBy = "policyMember", optional = false, cascade = CascadeType.ALL)
public PackageBenefit getPackageBenefit() {
return packageBenefit;
}
public void setPackageBenefit(PackageBenefit packageBenefit) {
this.packageBenefit = packageBenefit;
}
public LocalDate getDateOfDeath() {
return dateOfDeath;
}
public void setDateOfDeath(LocalDate dateOfDeath) {
this.dateOfDeath = dateOfDeath;
}
public LocalDate getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(LocalDate dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public LocalDate getClosureDate() {
return closureDate;
}
public void setClosureDate(LocalDate closureDate) {
this.closureDate = closureDate;
}
public LocalDateTime getCreationDate() {
return creationDate;
}
public void setCreationDate(LocalDateTime creationDate) {
this.creationDate = creationDate;
}
#OneToMany(orphanRemoval = true, mappedBy = "dependantToTransfer")
public List<DependantTransferRequest> getTransferRequests() {
return transferRequests;
}
public void setTransferRequests(List<DependantTransferRequest> transferRequests) {
this.transferRequests = transferRequests;
}
}
Composite Key:
#Embeddable
public class CompositePolicyMemberPK implements Serializable {
private String policyNumber;
private String suffixNumber;
private static final long serialVersionUID = 1L;
public CompositePolicyMemberPK(String policyNumber, String suffixNumber) {
super();
this.policyNumber = policyNumber;
this.suffixNumber = suffixNumber;
}
public CompositePolicyMemberPK() {
super();
}
#Column(length = 30)
public String getPolicyNumber() {
return this.policyNumber;
}
public void setPolicyNumber(String policyNumber) {
this.policyNumber = policyNumber;
}
#Column(length = 2)
public String getSuffixNumber() {
return this.suffixNumber;
}
public void setSuffixNumber(String suffixNumber) {
this.suffixNumber = suffixNumber;
}
#Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof CompositePolicyMemberPK)) {
return false;
}
CompositePolicyMemberPK other = (CompositePolicyMemberPK) o;
return (getPolicyNumber() == null ? other.getPolicyNumber() == null : getPolicyNumber().equals(other.getPolicyNumber())) && (getSuffixNumber() == null ? other.getSuffixNumber() == null : getSuffixNumber().equals(other.getSuffixNumber()));
}
#Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (getPolicyNumber() == null ? 0 : getPolicyNumber().hashCode());
result = prime * result + (getSuffixNumber() == null ? 0 : getSuffixNumber().hashCode());
return result;
}
#Override
public String toString() {
return this.getPolicyNumber() + "-" + this.getSuffixNumber();
}
}
The code that is responsible for persisiting the policy is as follows:
public Subscriber addMemberToSteward(Long stewardId, Subscriber subscriber) {
Steward steward = this.findStewardById(stewardId);
if(steward == null){
throw new EcosureException(String.format("No steward found with id '%s'.",stewardId));
}
final BillingStatus billingStatus = BillingStatus.REG_IN_PROGRESS;
final MemberStatus memberStatus = MemberStatus.NEW;
final ProductPackage product = productService.findPackageById(subscriber.getProductPackageId());
subscriber.setNationalId(nationalIDNumberUtils.formatIdNumber(subscriber.getNationalId()));
final PolicyHolder policyHolder = convertToPolicyHolder(subscriber, product, billingStatus, memberStatus);
Policy policy = getPolicyFromSubscriberInfo(subscriber, policyHolder);
policy.setSteward(steward);
policy.setStatus(PolicyStatus.NEW);
System.out.println("Policy Holder" + policyHolder);
policyRepository.save(policy);
return subscriber;
}
The getPolicyFromSubscriberInfo method is below:
private Policy getPolicyFromSubscriberInfo(final Subscriber subscriberInfo, final PolicyHolder policyHolder) throws {
final Policy policy = new Policy();
policy.setMsisdn(subscriberInfo.getMsisdn());
policy.setPolicyNumber(policyNumberGenerator.getNextPolicyNumber());
policy.setPolicyName(policyHolder.getFirstname() + " " + policyHolder.getSurname());
policyHolder.setPolicy(policy);
CompositePolicyMemberPK policyMemberId = new CompositePolicyMemberPK();
policyMemberId.setPolicyNumber(policy.getPolicyNumber());
policyMemberId.setSuffixNumber(policyNumberGenerator.getNextSuffix(policy.getPolicyNumber(),true));
policyHolder.setPolicyMemberId(policyMemberId);
policy.setPolicyHolder(policyHolder);
return policy;
}
The PolicyRepository is shown below:
public interface PolicyRepository extends JpaRepository<Policy, String> {
}
When I try to persist a Policy entity I am getting the error below:
2016-12-09 09:47:43,461 ERROR [io.undertow.request] (default task-15) UT005023: Exception handling request to /ecosure-api/api/v3/stewards/243/policies: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist(); nested exception is javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist()
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at com.econetwireless.ecosure.api.filters.AuthenticationTokenFilter.doFilter(AuthenticationTokenFilter.java:60)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.orm.jpa.JpaSystemException: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist(); nested exception is javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist()
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:418)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:492)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy1272.save(Unknown Source)
at com.econetwireless.ecosure.service.stewards.StewardServiceImpl.addMemberToSteward(StewardServiceImpl.java:115)
at com.econetwireless.ecosure.api.controllers.StewardController.addMemberToGroup(StewardController.java:91)
at com.econetwireless.ecosure.api.controllers.StewardController$$FastClassBySpringCGLIB$$69e389b2.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.econetwireless.ecosure.api.controllers.StewardController$$EnhancerBySpringCGLIB$$2d501d51.addMemberToGroup(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
... 65 more
Caused by: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist()
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1152)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
at com.sun.proxy.$Proxy1267.persist(Unknown Source)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:506)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:503)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:488)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
... 95 more
Caused by: org.hibernate.PersistentObjectException: uninitialized proxy passed to persist()
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:80)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:768)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:761)
at org.hibernate.jpa.event.internal.core.JpaPersistEventListener$1.cascade(JpaPersistEventListener.java:80)
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:391)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:316)
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:155)
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:104)
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:414)
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:252)
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67)
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:778)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:751)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:756)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146)
Can anyone please assist me in identifying where I am going wrong.

org.hibernate.HibernateException: More than one row with the given identifier was found: 681

Dec 17, 2015 3:49:03 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [spring] in context with path [/crafartweb] threw exception [Request processing failed; nested
exception is org.hibernate.HibernateException: More than one row with
the given identifier was found: 681, for class:
com.crafart.dataobjects.StoreDO] with root cause
org.hibernate.HibernateException: More than one row with the given identifier was found: 681, for class: com.crafart.dataobjects.StoreDO
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:104)
at org.hibernate.loader.entity.EntityLoader.loadByUniqueKey(EntityLoader.java:161)
at org.hibernate.persister.entity.AbstractEntityPersister.loadByUniqueKey(AbstractEntityPersister.java:2374)
at org.hibernate.type.EntityType.loadByUniqueKey(EntityType.java:722)
at org.hibernate.type.EntityType.resolve(EntityType.java:492)
at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:168)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:137)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1112)
at org.hibernate.loader.Loader.processResultSet(Loader.java:969)
at org.hibernate.loader.Loader.doQuery(Loader.java:917)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:348)
at org.hibernate.loader.Loader.doList(Loader.java:2548)
at org.hibernate.loader.Loader.doList(Loader.java:2534)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2364)
at org.hibernate.loader.Loader.list(Loader.java:2359)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:495)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:357)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1194)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at com.crafart.data.SellerDAOImpl.getSellerDetails(SellerDAOImpl.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy78.getSellerDetails(Unknown Source)
at com.crafart.seller.service.ManageSellerServiceImpl.getSellerDetails(ManageSellerServiceImpl.java:170)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy89.getSellerDetails(Unknown Source)
at com.crafart.MenuController.showManageSellers(MenuController.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run
(Thread.java:744)
My StoreClass is ---
/**
*
*/
package com.crafart.dataobjects;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* store entity data object maps to store table in crafart database. Property
* belongs to store table and store_id is primary key which is generated by db
* sequence <blockquote>seq_store<blockquote>
*
* #author Karthi
* #version 1.0
*
*/
#Entity
#Table(name = "STORE")
public class StoreDO implements Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = -3168290124126749175L;
#Id
#Column(name = "store_id")
#SequenceGenerator(name = "seq_store", sequenceName = "seq_store", allocationSize = 1)
#GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_store")
private long storeId;
#ManyToOne
#JoinColumn(name = "seller_id", nullable = false)
private SellerDO sellerDO;
#Column(name = "name")
private String name;
#Column(name = "store_url")
private String storeUrl;
#Column(name = "store_description")
private String storeDescription;
#Column(name = "return")
private String storeReturn;
public SellerDO getSellerDO() {
return sellerDO;
}
public void setSellerDO(SellerDO sellerDO) {
this.sellerDO = sellerDO;
}
public long getStoreId() {
return storeId;
}
public void setStoreId(long storeId) {
this.storeId = storeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStoreUrl() {
return storeUrl;
}
public void setStoreUrl(String storeUrl) {
this.storeUrl = storeUrl;
}
public String getStoreDescription() {
return storeDescription;
}
public void setStoreDescription(String store_Description) {
this.storeDescription = store_Description;
}
public String getStoreReturn() {
return storeReturn;
}
public void setStoreReturn(String store_Return) {
this.storeReturn = store_Return;
}
}
**
storeBO class is this
**
/**
*
*/
package com.crafart.dataobjects;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* seller entity data object maps to seller table in crafart database. Property
* belongs to seller table and seller_id is primary key which is generated by db
* sequence <blockquote>seq_seller<blockquote>
*
* #author karthi
* #version 1.0
*/
#Entity
#Table(name = "SELLER")
public class SellerDO implements Serializable, Cloneable {
/**
* generated serial id
*/
private static final long serialVersionUID = 2950842206999695829L;
#Id
#Column(name = "seller_id")
#SequenceGenerator(name = "seq_seller", sequenceName = "seq_seller", allocationSize = 1)
#GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_seller")
private long sellerId;
#OneToMany(mappedBy = "sellerDO", targetEntity=StoreDO.class, cascade = CascadeType.ALL)
private StoreDO storeDO;
#Column(name = "first_Name")
private String firstName;
#ManyToMany(cascade = { CascadeType.ALL })
#JoinTable(name = "SELLER_ADDRESS", joinColumns = { #JoinColumn(name = "SELLER_ID") }, inverseJoinColumns = { #JoinColumn(name = "ADDRESS_ID") })
private List<AddressDO> addressDOs = new ArrayList<>();
#OneToMany(cascade = { CascadeType.ALL })
#JoinTable(name = "SELLER_CONTACT", joinColumns = { #JoinColumn(name = "SELLER_ID") }, inverseJoinColumns = { #JoinColumn(name = "CONTACT_ID") })
private List<ContactDO> contactDOs = new ArrayList<>();
#ManyToMany(mappedBy = "sellerDOs")
private List<ProductDO> productDOs = new ArrayList<>();
#Column(name = "last_Name")
private String lastName;
#Column(name = "gender")
private int gender;
#Column(name = "dob")
private String dateOfBirth;
private int tin_no;
#Column(name = "company_Name")
private String companyName;
#Column(name = "company_Logo")
private String companyLogo;
#Column(name = "epch_no")
private String epchNo;
#Column(name = "vat_no")
private String vat_no;
#Column(name = "cst_no")
private String cst_no;
/*
* add variables
* */
#Column(name = "gst_no")
private String gst_no;
#Column(name = "officeno")
private int officeno;
#Column(name = "mobileno")
private int mobileno;
#Column(name = "email")
private String email;
#Column(name = "panno")
private String panno;
#OneToOne(cascade = {CascadeType.ALL})
#JoinColumn(name = "commission_id",nullable = true)
private CommissionDO commissionDO;
private int status;
private int approved;
#Column(name = "password")
private String password;
#Column(name = "confirm_password")
private String confirmpassword;
public String getEpchNo() {
return epchNo;
}
public void setEpchNo(String epchNo) {
this.epchNo = epchNo;
}
public String getConfirmpassword() {
return confirmpassword;
}
public void setConfirmpassword(String confirmpassword) {
this.confirmpassword = confirmpassword;
}
public long getSellerId() {
return sellerId;
}
public void setSellerId(long sellerId) {
this.sellerId = sellerId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getTin_no() {
return tin_no;
}
public void setTin_no(int tin_no) {
this.tin_no = tin_no;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getCompanyLogo() {
return companyLogo;
}
public void setCompanyLogo(String companyLogo) {
this.companyLogo = companyLogo;
}
public String getEpch_no() {
return epchNo;
}
public void setEpch_no(String epch_no) {
this.epchNo = epch_no;
}
public String getVat_no() {
return vat_no;
}
public int getOfficeno() {
return officeno;
}
public void setOfficeno(int officeno) {
this.officeno = officeno;
}
public int getMobileno() {
return mobileno;
}
public void setMobileno(int mobileno) {
this.mobileno = mobileno;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPanno() {
return panno;
}
public void setPanno(String panno) {
this.panno = panno;
}
public void setVat_no(String vat_no) {
this.vat_no = vat_no;
}
public String getCst_no() {
return cst_no;
}
public void setCst_no(String cst_no) {
this.cst_no = cst_no;
}
public String getGst_no() {
return gst_no;
}
public void setGst_no(String gst_no) {
this.gst_no = gst_no;
}
public CommissionDO getCommissionDO() {
return commissionDO;
}
public void setCommissionDO(CommissionDO commissionDO) {
this.commissionDO = commissionDO;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getApproved() {
return approved;
}
public void setApproved(int approved) {
this.approved = approved;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public List<ContactDO> getContactDOs() {
return contactDOs;
}
public void setContactDOs(List<ContactDO> contactDOs) {
this.contactDOs = contactDOs;
}
public StoreDO getStoreDO() {
return storeDO;
}
public void setStoreDO(StoreDO storeDO) {
this.storeDO = storeDO;
}
public List<AddressDO> getAddressDOs() {
return addressDOs;
}
public void setAddressDOs(List<AddressDO> addressDOs) {
this.addressDOs = addressDOs;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<ProductDO> getProductDOs() {
return productDOs;
}
public void setProductDOs(List<ProductDO> productDOs) {
this.productDOs = productDOs;
}
}
You have an invalid mapping
#OneToMany(mappedBy = "sellerDO", targetEntity=StoreDO.class, cascade = CascadeType.ALL)
private StoreDO storeDO;
Should be
#OneToMany(mappedBy = "sellerDO", targetEntity=StoreDO.class, cascade = CascadeType.ALL)
private List<StoreDO> storeDO;
#OneToMany(mappedBy = "sellerDO", targetEntity=StoreDO.class, cascade = CascadeType.ALL)
private Set<StoreDO> storeDO;

[org.hibernate.mapping.Column(authorities)]

I have follow Hibernate error:
"Could not determine type for: java.util.List, at table: user, for columns: [org.hibernate.mapping.Column(authorities)]"
What can cause a problem?
Also, is it possible use it without model role, and set return getAuthority role "USER" by default?
User model:
#Entity
#Table(name = "user")
public class User implements UserDetails {
private int id;
private String username;
private String password;
private List<Role> roles;
#Id
#GeneratedValue
#Column(name = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
#Basic
#Column(name = "username")
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
#Basic
#Column(name = "password")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
#Override
public String getUsername() {
return this.username;
}
#Override
public boolean isAccountNonExpired() {
return true;
}
#Override
public boolean isAccountNonLocked() {
return true;
}
#Override
public boolean isCredentialsNonExpired() {
return true;
}
#Override
public boolean isEnabled() {
return true;
}
#Override
public List<Role> getAuthorities() {
return this.roles;
}
#OneToMany(mappedBy = "user")
public List<Role> getRoles() {
return this.roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
}
Role model:
#Entity
#Table(name = "role")
public class Role implements GrantedAuthority {
private int id;
private User user;
private String role;
public Role() {
}
public Role(String role){
this.role = role;
}
#Id
#GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
#ManyToOne
#JoinColumn(name="user_id")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
#Override
public String getAuthority() {
return this.role;
}
#Basic
#Column(name="role")
public String getRole(){
return this.role;
}
public void setRole(String role){
this.role = role;
}
}
I found solution myself. I set #Transient annotation to all method, which i don't want that it shouldn't be column in table.
You must replace all annotations for the attributes not to the getter methods.

Resources