Я использовал шаблон плех-пружинные данные JPA, чтобы начать проект иSpring Data JPA - Композитный первичного ключ вопрос
У меня возникли проблемы, пытаясь сделать карту спящего режима в соединении таблицы, использует составной первичный ключ.
База данных, к которой я подключаюсь, представляет собой существующий mysql.
Пожалуйста, смотрите ниже:
SQL:
CREATE TABLE IF NOT EXISTS `text_advertising`.`campaign_item_slots` (
`campaign_item_id` BIGINT NOT NULL,
`advert_slot_id` BIGINT NOT NULL,
`active` TINYINT(1) NOT NULL DEFAULT TRUE,
`date_created` DATETIME NOT NULL,
`date_updated` DATETIME NOT NULL,
PRIMARY KEY (`campaign_item_id`, `advert_slot_id`),
INDEX `fk_campaign_item_slots_2_idx` (`advert_slot_id` ASC),
CONSTRAINT `fk_campaign_item_slots_1`
FOREIGN KEY (`campaign_item_id`)
REFERENCES `text_advertising`.`campaign_items` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_campaign_item_slots_2`
FOREIGN KEY (`advert_slot_id`)
REFERENCES `text_advertising`.`advert_slots` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
CampaignItemSlot Класс:
@Entity
@Table(name = "campaign_item_slots")
public class CampaignItemSlot implements Serializable{
\t
\t @EmbeddedId
\t CampaignItemSlotId campaignItemSlotId;
\t
private boolean active;
private Timestamp date_created;
private Timestamp date_updated;
}
CampaignItemSlotId Класс
@Embeddable
public class CampaignItemSlotId implements Serializable{
\t @Column(name="advert_slot_id")
\t public long advertSlot;
\t
\t @Column(name="campaign_item_id")
\t public long campaignItem;
\t
}
Когда я установил "hibernate.hbm2ddl.auto", "проверки", то я получаю следующее сообщение об ошибке:
Caused by: org.hibernate.HibernateException: Missing column: id in text_advertising.campaign_item_slots
W Я установил «hibernate.hbm2ddl.auto», «update», тогда поле id автоматически создается в таблице campaign_item_slots, как показано, когда я создаю таблицу создания show. Это не то, что я хочу:
| campaign_item_slots | CREATE TABLE `campaign_item_slots` (
`campaign_item_id` bigint(20) NOT NULL,
`advert_slot_id` bigint(20) NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
`id` bigint(20) NOT NULL,
`advertSlot_id` bigint(20) DEFAULT NULL,
`campaignItem_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`campaign_item_id`,`advert_slot_id`),
KEY `fk_campaign_item_slots_2_idx` (`advert_slot_id`),
KEY `FK_q87o53119u79073jwttacsqta` (`advertSlot_id`),
KEY `FK_es60h5vj30rllkf0js1qy642y` (`campaignItem_id`),
CONSTRAINT `FK_es60h5vj30rllkf0js1qy642y` FOREIGN KEY (`campaignItem_id`) REFERENCES `campaign_items` (`id`),
CONSTRAINT `fk_campaign_item_slots_1` FOREIGN KEY (`campaign_item_id`) REFERENCES `campaign_items` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_campaign_item_slots_2` FOREIGN KEY (`advert_slot_id`) REFERENCES `advert_slots` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_q87o53119u79073jwttacsqta` FOREIGN KEY (`advertSlot_id`) REFERENCES `advert_slots` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Это мой build.sbt:
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
javaCore,
javaJpa,
javaWs % "test",
"org.springframework" % "spring-context" % "4.1.4.RELEASE",
"org.springframework.data" % "spring-data-jpa" % "1.8.0.RELEASE",
"org.springframework" % "spring-orm" % "4.1.4.RELEASE",
"org.springframework" % "spring-jdbc" % "4.1.4.RELEASE",
"org.springframework" % "spring-tx" % "4.1.4.RELEASE",
"org.springframework" % "spring-expression" % "4.1.4.RELEASE",
"org.springframework" % "spring-aop" % "4.1.4.RELEASE",
"org.springframework" % "spring-test" % "4.1.4.RELEASE" % "test", \t javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.8.Final",
"javax.inject" % "javax.inject" % "1",
"mysql" % "mysql-connector-java" % "5.1.34",
"org.json" % "json" % "20090211"
)
lazy val root = (project in file(".")).enablePlugins(PlayJava)
Я пробовал много различных комбинаций использования IdClass и EmbeddedId и т. д., как описано на этом сайте: mapping variations
Так какой комбинации вещей, которые я стараюсь, после некоторых пустячный я получаю ту же ошибку в:
Caused by: org.hibernate.HibernateException: Missing column: id in text_advertising.campaign_item_slots
Я начинаю задаваться вопросом, если это вопрос весной данных.
Приятно оценить любую помощь в этом. Благодарю.
Нет проблем с тем, как вы комбинировали idClass и Embedded. Я могу заставить вас работать с вашим кодом. SInce вы уже определили схему, почему вы хотите использовать hibernate.hbm2ddl.auto. Почему бы просто не установить свойство вообще? – ArunM
Спасибо ArunM за запуск кода. Конфигурация, которую я предоставил в своем сообщении, просто не хотела работать для меня вообще. См. Ответ на этот пост. – HashBang