Код: Выделить всё
CREATE TABLE person
(name VARCHAR(10) NOT NULL,
birthday DATE NOT NULL,
street VARCHAR(200) NOT NULL,
house_number NUMERIC(3) NOT NULL,
zip CHAR(5) NOT NULL,
city VARCHAR(100) NOT NULL,
CONSTRAINT person_pk PRIMARY KEY (name, birthday)
);
Код: Выделить всё
class person {
public:
person() = default;
person(const PersonId& id, const string& street, int house_number, const string& zip, const string& city)
: id_(id), street_(street), house_number_(house_number), zip_(zip), city_(city) {}
const PersonId& id() const { return id_; }
void id(const PersonId& id) { id_ = id; }
const string& street() const { return street_; }
void street(const string& street) { street_ = street; }
int house_number() const { return house_number_; }
void house_number(int house_number) {house_number_ = house_number; }
const string& zip() const { return zip_; }
void zip(const string& zip) { zip_ = zip; }
const string& city() const { return city_; }
void city(const string& city) { city_ = city; }
private:
#pragma db column("")
#pragma db id
PersonId id_;
string street_;
#pragma db type("NUMERIC(3)")
int house_number_;
string zip_;
string city_;
};
Код: Выделить всё
namespace odb {
namespace pgsql {
template
struct value_traits
{
using image_type = details::buffer;
using query_type = int;
static void set_image(image_type& image, std::size_t& size, bool& is_null, const int& value)
{
is_null = false;
std::string s = std::to_string(value);
size = sizeof(int);
std::cout persist(new_person) я получаю следующую ошибку:
08P01: ОШИБКА: в сообщении осталось недостаточно данных.
КОНТЕКСТ: безымянный параметр портала $4.
Параметр $4 относится к house_number. Кто-нибудь знает, в чем здесь проблема?
Спасибо за помощь. уже в вперед!
При печати значения изображения в функции set_image() на консоль печатается правильное значение.
Подробнее здесь: [url]https://stackoverflow.com/questions/79345402/odb-type-mapping-postgresql-numeric-to-c-int-with-value-traits-specialization[/url]