【发布时间】:2019-01-18 12:39:30
【问题描述】:
我总有一天会遇到一个问题。 所以让我们开始吧。我有 3 个类,例如标签、优惠和动物
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "animals")
public class Animal {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "animal_id")
private Long id;
@Column(name = "name")
@NotNull
private String name;
@Column(name = "description")
@NotNull
private String text;
@Column(name = "quantity")
@NotNull
private int count;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", nullable = false)
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tag_id", nullable = false)
private Tag tags;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "offer_id", nullable = true)
private Offer offer;
优惠
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "offer")
public class Offer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "offer_id")
private Long id;
@Column(name = "title")
@NotNull
private String title;
@Column(name = "description")
@NotNull
private String text;
@Column(name = "price")
@NotNull
private int price;
@Column(name = "contact")
@NotNull
private int contact;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date", nullable = false, updatable = false)
@CreationTimestamp
private java.util.Date createDate;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", nullable = false)
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tag_id", nullable = false)
private Tag tags;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "animal_id", nullable = false)
private Animal animal;
还有标签。
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "tags")
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "tag_id")
private long id;
@Column(name = "name")
@Email(message = "*Please provide a valid tag")
@NotEmpty(message = "*Please provide an tag")
private String name;
@OneToMany(mappedBy = "tags")
private Set<Offer> offers;
@OneToMany(mappedBy = "tags")
private Set<Animal> animals;
OneToOne 关系是因为我想为一只动物提供一个报价。
我也有控制器喜欢显示添加新的报价。
@RequestMapping(value = "/postForm", method = RequestMethod.GET)
public String newOffer(Principal principal,Model model) {
String e_mail = principal.getName();
System.out.println(e_mail);
User user = userService.findUserByEmail(e_mail);
Offer offer = new Offer();
offer.setUser(user);
Long id = user.getId();
List<Tag> tags = tagService.findAlltags();
List<Animal> animal = animalRepository.findAnimalByUser(user);
model.addAttribute("tags", tags);
model.addAttribute("animals",animal);
model.addAttribute("offer", offer);
return "/postForm";
}
我正在传递诸如动物之类的列表,以及要选择标签的标签,以及分配给用户的动物。 我的动物仓库。
public interface AnimalRepository extends JpaRepository<Animal, Long> {
List<Animal> findAnimalByUser(User user);
}
实际上,我在正确展示动物方面存在问题。标签显示正确,但动物列表无法评估动物类别内的标签。更具体地说,让我向您展示 Inteliji 的回溯屏幕
imgur 的链接enter link description here 关系可能有问题,但究竟是什么?感谢所有的答案。 :)
【问题讨论】:
-
请勿发布小图片,尤其是在您不了解我们的显示设置的情况下。在您的问题中发布堆栈跟踪。
标签: java spring spring-data-jpa