2016-04-25 6 views
-1
**** customer Class Model********* 
     @Entity 
     @Table(name="customer") 
     @NamedQuery(name="Customer.findAll", query="SELECT c FROM Customer c") 
     public class Customer implements Serializable { 
      private static final long serialVersionUID = 1L; 

      @Id 
      @GeneratedValue(strategy=GenerationType.AUTO) 
      @Column(unique=true, nullable=false) 
      private int idCustomer; 

      @Column(nullable=false, length=45) 
      private String name; 


      //bi-directional many-to-one association to Login 
      @OneToMany(mappedBy="customer") 
      private Set<Login> logins; 

      //bi-directional many-to-one association to Transaction 
      @OneToMany(mappedBy="customer") 
      private Set<Transaction> transactions; 

      public Customer() { 
      } 

      public int getIdCustomer() { 
       return this.idCustomer; 
      } 

      public void setIdCustomer(int idCustomer) { 
       this.idCustomer = idCustomer; 
      } 

      public String getName() { 
       return this.name; 
      } 

      public void setName(String name) { 
       this.name = name; 
      } 

      public Set<Login> getLogins() { 
       return this.logins; 
      } 

      public void setLogins(Set<Login> logins) { 
       this.logins = logins; 
      } 

      public Login addLogin(Login login) { 
       getLogins().add(login); 
       login.setCustomer(this); 

       return login; 
      } 

      public Login removeLogin(Login login) { 
       getLogins().remove(login); 
       login.setCustomer(null); 

       return login; 
      } 
     } 

****** Войти Класс модели *********как решить SQL исключения грамматика и Неизвестный столбец «идентификатор» в springBoot

@Entity 
@Table(name="login") 
@NamedQuery(name="Login.findAll", query="SELECT l FROM Login l") 
public class Login implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(unique=true, nullable=false) 
    private int idLogin; 

    @Column(length=45) 
    private String password; 

    @Column(length=45) 
    private String uName; 

    //bi-directional many-to-one association to Customer 
    @ManyToOne 
    @JoinColumn(name="idCustomer", nullable=false) 
    private Customer customer; 

    public Login() { 
    } 

    public int getIdLogin() { 
     return this.idLogin; 
    } 

    public void setIdLogin(int idLogin) { 
     this.idLogin = idLogin; 
    } 

    public String getPassword() { 
     return this.password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getUName() { 
     return this.uName; 
    } 

    public void setUName(String uName) { 
     this.uName = uName; 
    } 

    public Customer getCustomer() { 
     return this.customer; 
    } 

    public void setCustomer(Customer customer) { 
     this.customer = customer; 
    } 

} 

моего метод контроллера экономию логин и объект-заказчик в базе данных

@RequestMapping(value="/save",method=RequestMethod.POST)public StringsaveCust(
    @ModelAttribute("cust") 
    @Valid Customer cust, 
    BindingResult result, 
    @RequestParam("pass") String pass , 
    @RequestParam("user") String user){ 


       if (result.hasErrors()) { 
        return "redirect:/customer"; 
       } 

       cust = custRepo.save(cust);//using spring DAO to save the object 
       Login log = new Login(); //creaing a new login 
       log.setUName(user); //setting the user 
       log.setPassword(pass); //setting the pass 
       log.setCustomer(cust); //setting the customer 
       logRepository.save(log); //doesnt save the login . bt customer is saved 
       return "success"; 

      } 

Я представил два класса моделей, которые я использовал в своем приложении springBoot. В моей базе данных есть 2 таблицы клиентов и логин, где в loginIDID клиента находится внешний ключ. Когда я пытаюсь сохранить мои 2 класса в базе данных, клиент сохраняется , и мой логин не сохраняется. я получаю сообщение об ошибке говорящее

Неизвестный столбец «id_customer» в «списке поля»

я использую thymeleaf в моей prohect и ошибок я вижу в Брауэр является

SQLGrammarException :

Я думаю, что я делаю что-то неправильно в методе контроллера. Может кто-нибудь объяснить мне, как это решить.

+0

В вашей базе данных, каково имя столбца, которое ссылается на 'idCustomer' в базе данных' Customer'? – aribeiro

+0

его 'idCustomer' – Priyamal

+1

В этом проблема. Вам нужно добавить имя столбца: '@Column (unique = true, nullable = false, name =" idCustomer ")'. – aribeiro

ответ

1

Какое имя столбца для idCustomer? Вы не указали name="COLUMN_NAME" в аннотации @Column, поэтому Hibernate по умолчанию использует ваш camelCaseParameter для столбцов с именем camel_case_parameter. Здесь, в частности, предполагается, что idCustomer отображается в столбце с именем id_customer.

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(unique=true, nullable=false) // missing name="COLUMN_NAME" 
private int idCustomer; 
+0

'@Column (unique = true, nullable = false name =" idCustomer ")' вы имеете в виду вот так – Priyamal

+0

Это зависит от того, какое фактическое имя столбца находится в вашей таблице базы данных. Если это «idCustomer», тогда да (за исключением добавления запятой после «nullable = false»). Если это «CUSTOMER_ID», используйте «@Column (unique = true, nullable = false, name =« CUSTOMER_ID »)». –

+0

bt im не разрешено записывать имя внутри '@Column (name =" idCustomer ")'. почему это – Priyamal