Рассмотрим простую сущность, подобную Room
, которая имеет отношение @ManyToOne
к House
.
@Entity
class Room(
@ManyToOne(optional = true)
val house: House
) {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
val id: Long = 0
}
JPA создаст таблицу комнат со столбцом
`house_id` bigint(20) DEFAULT NULL
Если вы укажете @ManyToOne(optional = false)
, столбец будет выглядеть так:
`house_id` bigint(20) NOT NULL
[ 1122] Указывая необязательный параметр, вы сообщаете JPA, как должна быть сгенерирована схема, может ли столбец быть NULL
или нет.
Во время выполнения попытка загрузить Room
без House
вызовет исключение, если свойство дома не обнуляется (House
вместо House?
), даже если значение optional
равно true
.
То же самое относится к @JoinColumn
.
«Необязательный» ли параметр @ ManyToOne автоматически устанавливается с помощью обнуляемости Котлина?
blockquote>Нет, это не так. Он не зависит от этого и по умолчанию установлен на
true
.Заключение: Для того, чтобы ваша схема отражала ваши сущности, было бы неплохо использовать
optional = true
, если свойство дома будет обнуляемым, иoptional = false
, если свойство дома не обнуляемое .
Вы могли бы хотеть взглянуть на этот проект на codeplex http://www.codeplex.com/AspNetWSAT, который сделал, чтобы администратор соединил интерфейсом с этим, можно использовать. Я думаю, что существует несколько других подобных вокруг также.
Я не знаю ни о чем, что легко доступно, хотя у меня есть общее решение, что я считал упаковку и предоставление доступа как общий бесплатный набор, но я нашел, что нет большого спроса как большую часть времени, это - все определенные реализации так или иначе.
Позор, что этот проект был теперь удален из codeplex. Был однажды план осуществить рефакторинг все это в средства управления iirc. Если у кого-либо есть какие-либо другие идеи, я лично просто хочу быстрый и грязный администраторский раздел членства.
Я также искал GUI для этих таблиц. Что-то настолько распространенное должно иметь ссылку на открытые источники для реализации.
Вот что нашел мой поиск:
http://msadminse.codeplex.com/
Эта ссылка включает еще одну ссылку на более "продвинутую" версию. У меня не было большого успеха в использовании этого кода, но я собираюсь, вероятно, взять некоторые элементы пользовательского интерфейса для использования в своем решении.