java - 如何应用一对多和多一注释(Java Persistence)

标签 java mysql

我有两个表,如下:

表1:

CREATE TABLE `Product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `typename` varchar(255) DEFAULT NULL,
  `typecode` varchar(55) DEFAULT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=396 DEFAULT CHARSET=latin1;

表2:

CREATE TABLE measurements (
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    age_group varchar(20) NOT NULL,
    articleType NOT NULL,
    dimension text ,
    createdOn int(11) NOT NULL,
    updatedOn int(11) NOT NULL,
    createdBy text NOT NULL,
)ENGINE=InnoDB AUTO_INCREMENT=396 DEFAULT CHARSET=latin1;

现在如何在 Java 持久性中使用 join columnmeasurements.articleType = Product.typename 连接两个表。

我知道使用外键( http://en.wikibooks.org/wiki/Java_Persistence/OneToMany )使用一对多和多对一的概念。但上面的表没有外键。

最佳答案

我在这里假设您想要一个多对多。 在java中,如果你希望它是双向的,请使用

@ManyToMany(mappedBy = "products")
public List<Product> getProducts() { ... }

在产品中

@ManyToMany
@JoinTable(name = "product_measurement")
public List<Measurement> getMeasurement() { ... }

在 sql 中它将是:

CREATE TABLE product_measurement
(
product_measurement_id int(11) NOT NULL,
measurement_product_id int(11) NOT NULL,
FOREIGN KEY (measurement_product_id) REFERENCES measurement (id),
FOREIGN KEY (product_measurement) REFERENCES product (id)
);

关于java - 如何应用一对多和多一注释(Java Persistence),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261700/

相关文章:

java - 找不到 Gradle Java 9 模块

java - 如何用 Java 创建运费计算器

php - 从连接表中删除特定行

java.sql.SQLException : Access denied for user 'root' @'localhost'

mysql - MariaDB 插入到哪里

Java 更改字节码 - 不起作用

c# - 编译 c++/c#/java 有何不同?

java - 如何在 Spring Boot 中限制仅 5 个设备的登录?

Php Post到Mysql中的两个表

mysql - 测试远程数据库访问主机