мне нужно дополнительное кодирование на стороне Java для спящих аннотаций один ко многим - PullRequest
0 голосов
/ 04 марта 2011

Вот мои спящие классы

package com.vaannila.domain;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.web.bind.annotation.ModelAttribute;


@Entity
@Table(name = "countries")
public class Country {

@Id
@Column(name = "country_id")
@GeneratedValue
private  Integer country_id;


@Column(name = "country_name")
private String country_name;


public Country(Integer country_id , String name ){

    this.country_name = name;
    this.country_id = country_id;

}


/**
 * @param country_id the country_id to set
 */
public void setCountry_id(Integer country_id) {
    this.country_id = country_id;
}
/**
 * @return the country_id
 */
public Integer getCountry_id() {
    return country_id;
}
/**
 * @param country_name the country_name to set
 */
public void setCountry_name(String country_name) {
    this.country_name = country_name;
}
/**
 * @return the country_name
 */
public String getCountry_name() {
    return country_name;
}



}

Персона java

package com.vaannila.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.CascadeType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

import javax.validation.constraints.*;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;




/**
 * A simple POJO representing a Person
 */
@Entity
@Table(name = "PERSON")
public class Person implements Serializable {

 private static final long serialVersionUID = -5527566248002296042L;


 @Id
 @Column(name = "ID")
 @GeneratedValue
 private Integer id;


 @Column(name = "FIRST_NAME")
 private String firstName;

 @Column(name = "LAST_NAME")
 private String lastName;

 @Column(name = "MONEY")
 private Double money;

 @OneToMany(cascade = CascadeType.ALL)
 @JoinTable(name = "person_countries", joinColumns = { @JoinColumn(name = "person_id") }, 
         inverseJoinColumns = { @JoinColumn(name = "country_id") })
 private List<Country> student_countries ; 


 public List<Country> getStudent_countries() {
  return this.student_countries;
    }



 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 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 Double getMoney() {
  return money;
 }

 public void setMoney(Double money) {
  this.money = money;
 }
}

jsp форма

<tr><td>Country :</td>
            <td><form:checkboxes path="student_countries" items="${countryList}" itemValue="country_id" itemLabel="country_name" /></td>
    </tr>
    </table>

DAO Logic

 public void add(Person person) {
      logger.debug("Adding new person");

      // Retrieve session from Hibernate
      Session session = sessionFactory.getCurrentSession();

      // Save
      session.save(person);
     }

Но мои страны не добавляются в базу данных, все остальное заносится в личную таблицу, но не в таблицу отношений.

Ответы [ 2 ]

0 голосов
/ 04 марта 2011

Протестировал ваш код, у меня работает.Убедитесь, что настройки вашей конфигурации верны и не переопределены.

0 голосов
/ 04 марта 2011

Я полагаю, что проблема в том, что у вас нет отношения 1: n, у вас есть n: m! Потому что у вашего человека много странных странностей, и я думаю, что в каждой стране может быть более одного человека.

Таким образом, замените @OneToMany(cascade = CascadeType.ALL) в Персоне отношением @ManyToMany.

...