java - Hibernate:如何定义映射值列名称?

标签 java hibernate jpa

我有一个类,里面有 map 。它是使用连接表进行映射的。

@Entity 
@Table(name = "Sources")
@Lazy(false)
public class Sources {      
    @ManyToMany( fetch = FetchType.EAGER )  
    @JoinTable( name = "sources_lists", joinColumns = @JoinColumn( name = "list_id" ) )
@MapKeyColumn( name = "source_id" )
public Map<Integer, Source> getSources() { return sources; }
public void setSources( Map<Integer, Source> sourcesList ) { this.adSources = adSourcesList; }
private Map<Integer, Source> sources;

@Override
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Column( name="id", unique = true, nullable = false, updatable = false )
public Integer getId() { return super.getId(); }
}

我收到以下异常:“‘字段列表’中存在未知列‘sources0_.sources’”。 当我将“list_id”列名称更改为“源”时,一切正常,但我无法在生产中执行此操作。

表格是:

CREATE TABLE `sources` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`) );

CREATE TABLE `source` (
`DTYPE` varchar(31) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`className` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`));

CREATE TABLE `sources_lists` (
list_id` int(11) NOT NULL,
`source_id` int(11) NOT NULL,
KEY `FK54DCBD0B4307D0FC` (`source_id`),
KEY `FK54DCBD0B575FBECF` (`list_id`),
CONSTRAINT `FK54DCBD0B4307D0FC` FOREIGN KEY (`source_id`) REFERENCES `source` (`id`),
CONSTRAINT `FK54DCBD0B575FBECF` FOREIGN KEY (`list_id`) REFERENCES `sources` (`id`));

最佳答案

我意识到问题不在于列,而在于其他东西:我想通过其 id 映射 Source 对象,并且 Hibernate 假设连接表中有 3 列:父对象 id(Sources 类,list_id 列)、对象 id(Source 类、source_id 列)和映射键的单独列。我将提出另一个问题来询问在 Hibernate 中通过 id 映射对象的方法是什么。

关于java - Hibernate:如何定义映射值列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337752/

相关文章:

java - 如何以编程方式生成 Hibernate JPA 模式?

java - 为什么我从 Hibernate 多对多关系(外键约束)中得到 java.sql.SQLIntegrityConstraintViolationException

java - 如何访问 jpql 从托管 bean 中的 ejb 返回的集合

java - EclipseLink - 向 Postgres 添加索引

java - 没有原始属性的复合主键

java - 没有名为 X 的 EntityManager 的持久性提供程序 - JPA

java - 只知道 key 长度才能破解Vigenere

java - Hibernate:在 spring jpa 存储库中按字段排序的额外交叉连接

java - 带有连接池的 spring boot 应用程序中的 SQLServerDataSource

java - 在 JAVA 中设置工作不正确