17 мая, 2007 |
Hibernate, Q&A, java | 1 комментарий.
Q: I’m getting ‘org.hibernate.MappingException: collection was not an association’ when I try to join a collection of components with Criteria queries
A: Hibernate currently does not support joining a collection of components or other value types with Criteria. Use HQL or submit a patch that implements this functionality.
Ненавижу Hibernate, это было первое что, пришло в голову. И сразу ассоциация – швейцарский нож с вилкой, ложкой, пинцетом и зубочисткой, ножницами и пилочкой для ногтей, но в пятницу и без открывашки! Засада? Точно. Верится? Мало! Вот и я не поверил, что нельзя при помощи Criteria сделать фильтр по коллекции компонентов. И не зря не поверил – оказалось можно, но и как дефлорация пива ножом без открывашки, не совсем удобно и не каждый справится. далее »
19 апреля, 2007 |
java, Разное | Нет комментариев.
Таки состоялась намеченная встреча завсегдатаев #java-каналов белорусских IRC сетей. Участников было не много, но тенденция, черт возьми, радует.
Несмотря на то, что мы с SoDY минут n-адцать выбирали ту самую «Арку на ст.м. Октябрьская» из всего множества расположившихся там арок, бегая то к одной, то к другой, ребята терпеливо нас дождались. После скомканного знакомства вся компания двинулась в сторону «Старого Города». По дороге решили так далеко не забираться и вскоре мы облюбовали уютный столик в подвале бара «У ратуши». далее »
18 января, 2007 |
AspectJ, Hibernate, java | 2 comments.
Говорят (только не говорите этого женщинам), что в мире нет совершенства. Но почему-то все к нему стремятся. Вот и получается, что при разработке продуктов, которые должны уметь работать с различными СУБД (если не одновременно, то хотя бы в зависимости от опций развертывания), нам приходится учитывать все эти стремления их авторов к абсолютному и безусловному совершенству. Наверное, исходя из того, что клин клином вышибают, известный всем и уважаемый мною господин Gavin King добавил в любимый народом Hibernate поддержку различных SQL-диалектов, и даже сделал этот набор расширяемым.
Теперь представим ситуацию: мы разрабатываем продукт, который должен уметь работать с несколькими различными СУБД, например MySQL версий 4.x и 5.x, ну и postgresql. Для диалектов этих СУБД Hibernate предоставляет несколько классов - MySQLDialect, MySQLInnoDBDialect, MySQLMyISAMDialect, MySQL5Dialect, MySQL5InnoDBDialect и, наконец, PostgreSQL. Однако ни в одном из них не поддерживаются, например, побитовые операции. А что делать, если они нужны? Авторы рекомендуют расширить стандартные классы и в конструкторе каждого из них добавить в диалект реализацию недостающих функций. Т.е. в нашем случае нужно добавить шесть классов. А что делать, если количество планируемых к поддержке СУБД больше? Классический пример неудачно спроектированной иерархии, когда метаданные статически проецируют в поведение.
Однако кто вам сказал, что в мире нет совершенства? Наверное, он забыл вас предупредить, что есть AOP, и ApectJ как инструмент его реализации применительно к java. C помощью одного нехитрого аспекта можно расширить все используемые в продукте диалекты. далее »
2 октября, 2006 |
java | 1 комментарий.