【发布时间】:2018-02-10 19:33:19
【问题描述】:
我用谷歌搜索了很多,仍然没有找到任何解决方案,因此在这里发布一个问题..
我正在使用 lombok 开发多对多关系示例。我只想为四个字段中的两个字段创建参数构造函数。我们怎样才能做到这一点?
@Data
@Entity
@Table(name = "stock")
public class Stock implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "STOCK_ID", unique = true, nullable = false)
private Integer stockId;
@Column(name = "STOCK_CODE", unique = true, nullable = false, length = 10)
private String stockCode;
@Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)
private String stockName;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "stock_category", joinColumns = {
@JoinColumn(name = "STOCK_ID", nullable = false, updatable = false)},
inverseJoinColumns = {@JoinColumn(name = "CATEGORY_ID", nullable = false, updatable = false)})
private Set<Category> categories = new HashSet<Category>(0);
}
类别
@Data
@RequiredArgsConstructor(staticName = "of")
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CATEGORY_ID", unique = true, nullable = false)
private Integer categoryId;
@Column(name = "NAME", nullable = false, length = 10)
@NonNull
private String name;
@Column(name = "[DESC]", nullable = false)
@NonNull
private String desc;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "categories")
private Set<Stock> stocks = new HashSet<Stock>(0);
}
App.java
为什么我不能设置受限字段构造函数
public class App {
public static void main(String[] args) {
System.out.println("Hello World!");
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Stock stock = new Stock();
stock.setStockCode("7052");
stock.setStockName("PADINI");
Category category1 = new Category("CONSUMER", "CONSUMER COMPANY");
Category category2 = new Category("INVESTMENT", "INVESTMENT COMPANY");
Set<Category> categories = new HashSet<Category>();
categories.add(category1);
categories.add(category2);
stock.setCategories(categories);
session.save(stock);
session.getTransaction().commit();
System.out.println("Done");
}
}
【问题讨论】:
-
请不要发帖images of code。它们对那些试图解决您的问题的人没有帮助,因为我们无法复制和粘贴图像显示的代码。而是发帖properly formatted code blocks。
-
编辑您的问题以删除代码图像,而是将其作为代码块发布,以及一个例外情况,我相信这篇文章不值得投反对票。
-
对于您提供的输入的质量,您会收到赞成或反对票。如果您收到反对票,请考虑改进您的内容,而不是开始乞讨。相反:要求不投反对票很容易导致投反对票。考虑删除您的 cmets,并在以后避免此类声明。
标签: java spring hibernate lombok